一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

云服務(wù)器|WEB服務(wù)器|FTP服務(wù)器|郵件服務(wù)器|虛擬主機|服務(wù)器安全|DNS服務(wù)器|服務(wù)器知識|Nginx|IIS|Tomcat|

服務(wù)器之家 - 服務(wù)器技術(shù) - Nginx - nginx反向代理導(dǎo)致session失效的問題解決

nginx反向代理導(dǎo)致session失效的問題解決

2020-07-18 21:00雨歌 Nginx

這篇文章主要介紹了nginx反向代理導(dǎo)致session失效的問題解決,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

一同事求援:后臺系統(tǒng)的登錄成功了,但不能成功登進系統(tǒng),仍然跳轉(zhuǎn)到登錄頁,但同一套代碼另一個環(huán)境卻沒有問題。

背景

經(jīng)了解,他對同一個項目使用tomcat部署了兩個環(huán)境,一個在開發(fā)服務(wù)器上,一個在他本機,兩個環(huán)境代碼配置完全相同。兩邊通過同一個nginx進行反向代理,nginx配置大致如下,

?
1
2
3
4
5
6
7
location /health/ {
  proxy_pass http://192.168.40.159:8081/health/; #無問題的配置
 }
 
location /health-dev/ {
  proxy_pass http://192.168.40.202:8080/health/; #有問題的配置
}

一個反向代理到開發(fā)環(huán)境,一個反向代理到本機服務(wù)。

定位

既然代碼配置完全相同,那么問題很大可能就出現(xiàn)在nginx的反向代理上。

因為兩邊location路徑不同(即瀏覽器路徑不同),但是反向代理的服務(wù)端路徑卻相同,結(jié)合session的基本原理,如下圖,

nginx反向代理導(dǎo)致session失效的問題解決

  1. 當瀏覽器第一次打開頁面時,服務(wù)端會為這次會話創(chuàng)建一個session,并將session id通過response的header傳遞給瀏覽器,header一般為 Set-Cookie: JSESSIONID=xxxxx; Path=xxxx
  2. 瀏覽器接收到響應(yīng)后,如果header Set-Cookie 中path的值與瀏覽器地址路徑匹配,則將該header值存于瀏覽器的Cookie中
  3. 瀏覽器在下次請求服務(wù)器時,將Cookie中的JSESSIONID值通過request的header上報給服務(wù)端,header一般為 Cookie: JSESSIONID=xxxx;
  4. 服務(wù)端可通過該JSESSIONID來定位到對應(yīng)的session

nginx反向代理按這種方式配置時

?
1
2
3
location /health-dev/ {
  proxy_pass http://192.168.40.202:8080/health/;
}

瀏覽器訪問 http://www.domian.com/health-dev 時,服務(wù)端返回的 Set-Cookie 的 Path 值為 /health (因為中間有反向代理,服務(wù)端并不知道代理前的路徑是啥,是按最終請求服務(wù)端的路徑設(shè)置),如圖

nginx反向代理導(dǎo)致session失效的問題解決

因為瀏覽器訪問地址的路徑 /health-devSet-Cookie 的 Path /health 不匹配,所以瀏覽器并不會將其值存入Cookie中,如圖

nginx反向代理導(dǎo)致session失效的問題解決

因此在下次請求服務(wù)器時,瀏覽器無法設(shè)置request Cookie header的 JSESSIONID 值,服務(wù)器無法定位到對應(yīng)的session,因此會將其當做第一次請求,創(chuàng)建一個新的session,如此反復(fù),因此就算你登錄認證通過了,但服務(wù)器返回的登錄憑證(JSESSIONID)瀏覽器不會保存,并在下次請求時攜帶,導(dǎo)致服務(wù)器認為你是一個新的請求,當然就會又跳到登錄頁面了。

解決

nginx有一個命令 proxy_cookie_path (參考: proxy_cookie_path )可將服務(wù)器返回的 Set-Cookie 中的path進行修改,格式為 proxy_cookie_path 原路徑 目標路徑 ,我們在配置中添加 proxy_cookie_path 如下。

?
1
2
3
4
location /health-dev/ {
  proxy_pass http://192.168.40.202:8080/health/;
  proxy_cookie_path /health /health-dev;
}

重啟nginx,問題解決。

到此這篇關(guān)于nginx反向代理導(dǎo)致session失效的問題解決的文章就介紹到這了,更多相關(guān)nginx反向代理導(dǎo)致session失效內(nèi)容請搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!

原文鏈接:http://blog.jboost.cn/nginx-proxy.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 91尤物在线 | 亚洲精品色婷婷在线影院麻豆 | 麻生希无码 | 日韩精品成人a在线观看 | 日韩色图区 | 午夜影院一区二区三区 | 性直播免费 | 美女胸又大又黄又www小说 | 国产福利一区二区在线精品 | 婷婷色在线播放 | 精品AV综合导航 | 倩女还魂在线观看完整版免费 | 国产欧美一区二区精品性色99 | 日本亚洲欧洲高清有码在线播放 | 青青青国产精品国产精品美女 | 日本剧情片在线播放中文版 | 久久影院中文字幕 | 成人影院入口 | 午夜尤物 | 欧美不卡一区二区三区 | 蘑菇香蕉茄子绿巨人丝瓜草莓 | 精品卡1卡2卡三卡免费视频 | 亚洲精品一 | 久久婷婷丁香五月色综合啪免费 | 喷潮女王cytherea全部视频 | 国产精品久线观看视频 | 男生和女生搞逼逼 | 国产色站| 男人狂躁女人gif动态图 | 精品国产自在现线拍400部 | 美女扒开奶罩让男人吃奶 | 日韩亚洲一区中文字幕在线 | 99在线免费视频 | 国产日韩欧美在线观看不卡 | 国产精品久久久久久久久久久威 | 草莓视频丝瓜 | 亚洲色图亚洲色图 | 深夜激情网 | 成人123 | 免费理伦片手机在线播放 | 欧美亚洲韩国 |