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服務器

修改完畢。

因爲我找相關資料,找了大半天,沒有一個比較明確的說法,因此我在這裏總結一下,雖然總結的不夠好,總的來講仍是歸結到一塊兒了,但願也能幫到碰到這類問題的你。

相關文章
相關標籤/搜索