nginx代理及重定向之一

  1. 云栖社区>
  2. 博客>
  3. 正文

nginx代理及重定向之一

科技小能手 2017-11-12 16:38:00 浏览993
展开阅读全文

30号接到客户要求,需要将其官方域名默认页面更改,并嵌套于项目中。

本身项目域名是www.qin.com和www.qin.cn,增加官网域名le.qin.com和le.qin.cn;项目域名是访问项目默认首页,现在需要官网域名访问指定首页。首先就想到重定向域名到其页面,实施步骤如下:

1,在nginx配置文件中server下

server {
        listen       80;
        server_name  le.qin.com le.qin.cn;
               
        if ($host = 'leda.qinba56.cn' ) {
                 rewrite ^(.*) http://www.qin.cn/officialsite/initLedaIndex permanent;        
                          }
        if ($host = 'leda.qinba56.com' ) {
                 rewrite ^(.*) http://www.qin.com/officialsite/initLedaIndex permanent;       
                           }  

        location / {
             proxy_pass http://127.0.0.1:9002/;
             root   html;
             index  index.html index.htm index.jsp index.jspx;
             if ($request_uri ~* "\.(js|css|png|jpeg|jpg|bmp|mp3|swf|avi|flv)$"){
               expires 1d;
             }
        }         
}

这样倒是能实现,不过访问时地址会由:

le.qin.cn跳转到http://www.qin.cn/officialsite/initLedaIndex

le.qin.com跳转到http://www.qin.com/officialsite/initLedaIndex

但客户要求的是页面内容变地址不变,故此方法取消;


2,利用nginx反向代理proxy_pass

server {
        listen       80;
        server_name  le.qin.com le.qin.cn;

        location / {
             proxy_pass http://127.0.0.1:9002/officialsite/initLedaIndex;
             root   html;
             index  index.html index.htm index.jsp index.jspx;
             if ($request_uri ~* "\.(js|css|png|jpeg|jpg|bmp|mp3|swf|avi|flv)$"){
               expires 1d;
             }
        }         
}

这样能访问页面,但是只显示文字部分,其他显示不出来;


3,还是重定向

location / {
             proxy_pass http://127.0.0.1:9002/;
             root   html;
             index  index.html;
             rewrite "^/+$" /officialsite/initLedaIndex permanent; 
                   } 
报错404


4,后想到工程使用了session,故网上搜索了一下

Nginx作为反向代理到Tomcat应用时,session丢失,路径找不到

故在location / {}里加入以下代码:
            location / {
               proxy_pass http://127.0.0.1:9002/;
               root   html;
               index  index.html;
               rewrite "^/+$" /officialsite/initLedaIndex permanent;

               proxy_cookie_path /officialsite/initLedaIndex/ /;
               proxy_cookie_path /officialsite/initLedaIndex /;

                proxy_set_header   Cookie $http_cookie;
                proxy_set_header        Host    $http_host;

                           }


就可以访问了,不过访问地址为

http://le.qin.com/officialsite/initLedaIndex

http://le.qin.com/officialsite/initLedaIndex


5,还是没有实现地址不变的目的
 location / {
             proxy_pass http://127.0.0.1:9002/;
             root   html;
             index  index.html;
             rewrite "^/+$" /officialsite/initLedaIndex permanent; 
                   }

将permanent 更改为last

rewrite "^/+$" /officialsite/initLedaIndex last


最后变成:

server {
        listen       80;
        server_name  le.qin.com le.qin.cn;

  location / {
         proxy_pass http://127.0.0.1:9002/;
         root   html;
         index  index.html;
         rewrite "^/+$" /officialsite/initLedaIndex last;
         #proxy_cookie_path /offIcialsite/initLedaIndex/ /;
         proxy_cookie_path /offIcialsite/initLedaIndex /;
         proxy_set_header   Cookie $http_cookie;
         proxy_set_header   Host    $http_host;     
         proxy_set_header   X-Real-IP       $remote_addr;     
         proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
                   } 
终于还是实现了用le.qin.com或le.qin.cn访问新页面而且地址栏地址不变


本文转自 wdy198622 51CTO博客,原文链接:http://blog.51cto.com/weimouren/1845096


网友评论

登录后评论
0/500
评论
科技小能手
+ 关注