問題: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服務器
修改完畢。
因爲我找相關資料,找了大半天,沒有一個比較明確的說法,因此我在這裏總結一下,雖然總結的不夠好,總的來講仍是歸結到一塊兒了,但願也能幫到碰到這類問題的你。