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

问题描述

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

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

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

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

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

server
{
 ………………
………………
#方式一  只能代理到网站根目录下的其他目录
#if ( $request_uri ~* ^(/test)){#通过判断uri实现页面跳转
# rewrite ^/test/(.*)$ /test2/$1 last;#相对目录test2,不符合本次实际需求
#}
    
#方式二 代理url指定目录,
location /test {
                 root /start/;  #设置虚拟主机主目录相对路径,会去访问目录/start/test/
                 #注意目标目录权限,root目录不在nginx顶级root目录下
                 index  index.html;  #设置虚拟主机默认主页
                 # autoindex on;      #开启目录浏览功能

###############如果代理目录后css、js、png等静态资源无法访问的话,请加上下面语句,将url中包含test目录 且后缀名是gif、jpg……结尾的文件进行目录映射 ####   
                  location ~ ^/test/.*\.(gif|jpg|jpeg|png|bmp|swf|css|js|eot|svg|ttf|woff|woff2|properties|json)?$ {
                     root /start/;#虽然这里是/start/实际会转发到/start/test/目录

                expires 30d;

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

#下面这个配置仅作个人备忘,请忽视   
# location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|css|js|eot|svg|ttf|woff|woff2|properties|json)$ {
#            root  /web/ranjuan/;
#          if (-f $request_filename) {
#            expires 1d;
#            break;
#            }
#        }

#下面的配置原本打算将代理目录做php解析,但是配置文件不正确,放弃了,请忽视
#location /test/ {
                       
#                        alias /start/test/;#绝对目录,后面有斜杠,注意forbidden
#                        index    index.html;
             #           fastcgi_pass 127.0.0.1:9000;
			#			fastcgi_index index.php;
             #           fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
			#fastcgi_param SCRIPT_FILENAME $document_root $fastcgi_script_name;
			#include fastcgi_params;
#                }
 
               
#方式三、只能代理为http://ranjuan.cn的web目录下的相对目录,对本例无效
#location /test {
# rewrite ^/test/(.*)$  /test2/$1 last;# www网站root目录下的相对目录
#}                

………………
………………
}   

其他

本例中的配置只能代理纯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/

赞赏

微信赞赏支付宝赞赏

发表评论