解決nginx中proxy_pass到tomcat的session丟失問題


之前在配置tomcat的時候都是一個項目對應一個tomcat,也就是一個端口。最近需要把兩個項目整合到同一個tomcat中,通過配置nginx讓兩個域名指向同一tomcat的不同項目。整合完畢后發現其中一個項目的后台管理系統登錄不了了。經過調試發現原來是session丟失了。上網查了之后得到解決方案。現記錄下來作為備忘。

 

文章轉自:http://blog.csdn.net/yakson/article/details/46683285

*****************************************************************************************************************************************************************************************

引言

  一直以來我都是用nginx1.5.7來作為web服務器和代理服務器來使用,一直都是一個應用對應一個Tomcat也就是一個端口,也只對應一個域名。 
  今天把服務器上的Tomcat整合了一下,5個應用共用一個Tomcat。 
最先出現的問題是,用戶等進入后台時出現異常,找不到登錄的用戶信息! 
  經調試發現是request請求變成了多個,並且session也不一致,感覺就像是另一個瀏覽器在訪問,得出結論:肯定是session丟失了!

原因

  經過認真的分析,得出結論:問題出在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中的信息丟失。

解決方案

修改cookie的存儲路徑

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; }

重啟服務,測試! 
通過!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM