nginx tomcat http反向代理 session丢失的解决办法

问题:session丢失,出现了sessionid客户端与服务器端不一致的状况。 nginx

首先想到的是tomcat设置session tomcat

找到server.xml 配置context 服务器

<Context docBase="xxx" path="/xxx" reloadable="true" source="org.eclipse.jst.jee.server:gtopTracker" sessionCookiePath="/" sessionCookieName="xSessionId"  sessionCookieDomain=".xxx.com" />cookie

结果发现仍是同样。session

几经折磨,几经修改,仍是无果。dom

后来查一下nginx代理session丢失,找到了一个比较合适的答案eclipse

proxy_set_header   Cookie $http_cookie; 代理

在nginx配置http反向代理的时候,增长这个配置。 实际上domain配置是多余的,由于我这里是在同一台服务器,一级域名是一致的,只有二级域名的不一样。server

删掉sessionCookieDomain配置xml

具体配置以下:

nginx : 

 server{
    listen 80;
    server_name test.xxx.com;
    location / { 
        proxy_pass http://127.0.0.1:8080/xxx/;
        proxy_redirect default;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Cookie $http_cookie; 
        proxy_connect_timeout 30; 

    }
    } 

tomcat  须要增长cookie别名设置

<Context docBase="xxx" path="/xxx" reloadable="true" source="org.eclipse.jst.jee.server:xxx" sessionCookiePath="/" sessionCookieName="xxxSessionId"  />

完成后,执行  nginx -s reload

重启tomcat服务器

修改完毕。

因为我找相关资料,找了大半天,没有一个比较明确的说法,因此我在这里总结一下,虽然总结的不够好,总的来讲仍是归结到一块儿了,但愿也能帮到碰到这类问题的你。

相关文章
相关标签/搜索