Nginx系列教程之session丟失問題如何處理

在用nginx的反向代理tomcat的路徑中,可能會出現session丟失問題。每發送一次請求 JESSIONID  都會發生改變,說明上一次造成的session丟失,從而建立新的session。html

         第一種狀況:nginx

server{
        listen 80;
        server_name www.jiahemdata.com www.jiahemdata.cn;
        charset utf-8;
        location /{
            proxy_redirect off;
            proxy_pass http://127.0.0.1:8093;
            proxy_set_header Host $host;
            proxy_set_header Referer $http_referer;
            proxy_set_header X-Real-Ip $remote_addr;
            proxy_set_header   X-Forwarded-For    $proxy_add_x_forwarded_for;
        }
        access_log logs/tomcat_access.log;
    }

           因爲當前對的nginx只是監聽一個端口,不設定路徑,全部通常不會出現session丟失的問題。web

        第二種狀況:緩存

server{
        listen 80;
        server_name www.jiahemdata.com www.jiahemdata.cn;
        root /opt/tomcat-jhyx/webapps/jhyx/;
        charset utf-8;
        location /{
            proxy_pass http://127.0.0.1:8093/jhyx/;
            proxy_set_header Host $host;
            proxy_set_header Referer $http_referer;
            proxy_set_header X-Real-Ip $remote_addr;
            proxy_set_header   X-Forwarded-For    $proxy_add_x_forwarded_for;
        }
        access_log logs/tomcat_access.log;
    }

       這種狀況,指定了tomcat的文件夾,不單單是一個端口監聽,會致使每次請求都會發生變化,致使session丟失。tomcat

       第三種狀況:安全

server{
        listen 80;
        server_name www.jiahemdata.com www.jiahemdata.cn;
        root /opt/tomcat-jhyx/webapps/jhyx/;
        charset utf-8;
        location /{
            proxy_redirect off;
            proxy_pass http://127.0.0.1:8093/jhyx/;
            proxy_cookie_path /jhyx/ /;  //設置cookie路徑,從而不致使每次發生請求發生變化。
            proxy_cookie_path /jhyx /;
            proxy_set_header Host $host;
            proxy_set_header Referer $http_referer;
            proxy_set_header X-Real-Ip $remote_addr;
            proxy_set_header   X-Forwarded-For    $proxy_add_x_forwarded_for;
        }
        access_log logs/tomcat_access.log;
    }

      這時候,發現你的問題依然沒有解決,這時候你在想,我明明已經設置cookie路徑了,怎麼還不行呢,那是由於你請求的時候沒有發送cookie。服務器

       第四種狀況:cookie

server{
        listen 80;
        server_name www.jiahemdata.com www.jiahemdata.cn;
        root /opt/tomcat-jhyx/webapps/jhyx/;
        charset utf-8;
        location /{
            proxy_redirect off;
            proxy_pass http://127.0.0.1:8093/jhyx/;
            proxy_cookie_path /jhyx/ /;
            proxy_cookie_path /jhyx /;
            proxy_set_header Host $host;
            proxy_set_header Referer $http_referer;
            proxy_set_header Cookie $http_cookie;   //請求發送時攜帶cookie信息
            proxy_set_header X-Real-Ip $remote_addr;
            proxy_set_header   X-Forwarded-For    $proxy_add_x_forwarded_for;
        }
        access_log logs/tomcat_access.log;
    }

     問題解決。網絡

     但願你在茫茫網絡,找到一個正確的解決方法。session

往期文章

Nginx系列教程(1)nginx基本介紹和安裝入門

Nginx系列教程(2)nginx搭建靜態資源web服務器

Nginx系列教程(3)nginx緩存服務器上的靜態文件

Nginx系列教程(4)nginx處理web應用負載均衡問題以保證高併發

Nginx系列教程(5)如何保障nginx的高可用性(keepalived)

Nginx系列教程(6)nginx location 匹配規則詳細解說

Nginx系列教程(7)nginx rewrite配置規則詳細說明

Nginx系列教程(8)nginx配置安全證書SSL

Nginx系列教程(9)nginx 解決session一致性

相關文章
相關標籤/搜索