暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

nginx代理目录重定向(解决css/js错误404)

染卷 2020-04-19
1835

问题描述

1、现有网站http://ranjuan.cn的web目录位于linux服务的物理路径为/web/ranjuan/

2、现在想搭建一个纯静态网站,位于服务器的物理路径为/test/web/目录

3、在不增加新域名与开设新开放端口的前提下,想要使用http://ranjuan.cn/test地址跳转解析到/start/test/目录下!需要注意/start/test/目录权限问题


nginx配置方式(本例使用方式二解决问题!)

因代码排版问题,注意有些配置是一行,但是被截断/显示为两行了。如不确定请看代码左侧的所在行数进行判断!

  1. server

  2. {

  3. ………………

  4. ………………

  5. #方式一  只能代理到网站根目录下的其他目录

  6. #if ( $request_uri ~* ^(/test)){#通过判断uri实现页面跳转

  7. # rewrite ^/test/(.*)$ /test2/$1 last;#相对目录test2,不符合本次实际需求

  8. #}

  9.    

  10. #方式二 代理url指定目录,

  11. location /test {

  12.                  root /start/;  #设置虚拟主机主目录相对路径,会去访问目录/start/test/

  13.                  #注意目标目录权限,root目录不在nginx顶级root目录下

  14.                  index  index.html;  #设置虚拟主机默认主页

  15.                  # autoindex on;      #开启目录浏览功能

  16. ###############如果代理目录后css、js、png等静态资源无法访问的话,请加上下面语句,将url中包含test目录 且后缀名是gif、jpg……结尾的文件进行目录映射 ####  

  17.                   location ~ ^/test/.*\.(gif|jpg|jpeg|png|bmp|swf|css|js|eot|svg|ttf|woff|woff2|properties|json)?$ {

  18.                      root /start/;#虽然这里是/start/实际会转发到/start/test/目录

  19.                 expires 30d;

  20.         }

  21. ############css、js等静态资源404 请加上上面语句######               

  22.          }

  23. #下面这个配置仅作个人备忘,请忽视  

  24. # location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|css|js|eot|svg|ttf|woff|woff2|properties|json)$ {

  25. #            root  /web/ranjuan/;

  26. #          if (-f $request_filename) {

  27. #            expires 1d;

  28. #            break;

  29. #            }

  30. #        }

  31. #下面的配置原本打算将代理目录做php解析,但是配置文件不正确,放弃了,请忽视

  32. #location /test/ {

  33.                       

  34. #                        alias /start/test/;#绝对目录,后面有斜杠,注意forbidden

  35. #                        index    index.html;

  36.              #           fastcgi_pass 127.0.0.1:9000;

  37.       #      fastcgi_index index.php;

  38.              #           fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;

  39.       #fastcgi_param SCRIPT_FILENAME $document_root $fastcgi_script_name;

  40.       #include fastcgi_params;

  41. #                }

  42.               

  43. #方式三、只能代理为http://ranjuan.cn的web目录下的相对目录,对本例无效

  44. #location /test {

  45. # rewrite ^/test/(.*)$  /test2/$1 last;# www网站root目录下的相对目录

  46. #}               

  47. ………………

  48. ………………

  49. }  


其他

本例中的配置只能代理纯html或其他静态类文件!!!因为nginx本身是个html类web服务器,如果想要解析php就需要增加配置语句(能力有限目前没搞定)。

另外如果想要代理非静态网站/目录,建议还是使用nginx的反向代理功能,不管你最终想要实现什么效果,先把你的项目搭建成可以访问的web服务,比如访问http://www.ranjuan.cn:8080 就能访问你的新项目了,但是你想使用http://ranjuan.cn/javaweb来访问你的新项目,这时候反向代理是最好的选择,可以参考此文第5条:宝塔面板安装java web环境


基于互联网精神,在注明出处的前提下本站文章可自由转载!

本文链接:https://ranjuan.cn/nginx-proxy-redirect/


文章转载自染卷,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论