一直以來我都是用nginx1.5.7來做爲web服務器和代理服務器來使用,一直都是一個應用對應一個Tomcat也就是一個端口,也只對應一個域名。
今天把服務器上的Tomcat整合了一下,5個應用共用一個Tomcat。
最早出現的問題是,用戶等進入後臺時出現異常,找不到登陸的用戶信息!
經調試發現是request請求變成了多個,而且session也不一致,感受就像是另外一個瀏覽器在訪問,得出結論:確定是session丟失了!html
通過認真的分析,得出結論:問題出在Nginx的配置上!nginx
server_name www.weixin4j.org; charset utf-8; root /opt/apache-tomcat-7.0.53/webapps/weixin4j/; location / { proxy_pass http://127.0.0.1:8180/weixin4j/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }
此配置會致使cookie存儲的位置不是基於「/」那麼在第二次訪問的時候會重新建立session,所以session中的信息丟失。web
修改cookie的存儲路徑apache
server_name www.weixin4j.org; charset utf-8; root /opt/apache-tomcat-7.0.53/webapps/weixin4j/; location / { proxy_pass http://127.0.0.1:8180/weixin4j/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; add_header From www.weixin4j.org; proxy_cookie_path /weixin4j/ /; proxy_set_header Cookie $http_cookie; }
重啓服務,測試!
經過!瀏覽器