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一致性

相关文章
相关标签/搜索