欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2020年06月03日 09:05:27   作者:雨歌  
這篇文章主要介紹了nginx反向代理導(dǎo)致session失效的問題解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

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

背景

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

location /health/ {
  proxy_pass http://192.168.40.159:8081/health/; #無問題的配置
 }

location /health-dev/ {
  proxy_pass http://192.168.40.202:8080/health/; #有問題的配置
}

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

定位

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

因?yàn)閮蛇卨ocation路徑不同(即瀏覽器路徑不同),但是反向代理的服務(wù)端路徑卻相同,結(jié)合session的基本原理,如下圖,

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

nginx反向代理按這種方式配置時(shí)

location /health-dev/ {
  proxy_pass http://192.168.40.202:8080/health/;
}

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

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

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

解決

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

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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Nginx提高安全與性能的最好配置詳解

    Nginx提高安全與性能的最好配置詳解

    這篇文章主要介紹了Nginx提高安全與性能的最好配置詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • Nginx配置動態(tài)代理后通過curl訪問報(bào)403問題

    Nginx配置動態(tài)代理后通過curl訪問報(bào)403問題

    本文主要介紹了Nginx配置動態(tài)代理后通過curl訪問報(bào)403問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • Nginx如何獲取自定義請求header頭和URL參數(shù)詳解

    Nginx如何獲取自定義請求header頭和URL參數(shù)詳解

    這篇文章主要給大家介紹了關(guān)于Nginx如何獲取自定義請求header頭和URL參數(shù)的相關(guān)資料,本文適用于需要在nginx里獲取http請求頭信息或者傳遞的參數(shù)進(jìn)行一些計(jì)算和處理的情況,需要的朋友可以參考下
    2022-07-07
  • 關(guān)于nginx 實(shí)現(xiàn)jira反向代理的問題

    關(guān)于nginx 實(shí)現(xiàn)jira反向代理的問題

    這篇文章主要介紹了關(guān)于nginx 實(shí)現(xiàn)jira反向代理的問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09
  • Nginx 服務(wù)器重啟關(guān)閉重新加載命令

    Nginx 服務(wù)器重啟關(guān)閉重新加載命令

    這篇文章主要介紹了Nginx 服務(wù)器重啟關(guān)閉重新加載命令,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-03-03
  • linux查找當(dāng)前系統(tǒng)nginx路徑的兩種方法

    linux查找當(dāng)前系統(tǒng)nginx路徑的兩種方法

    工作中有很多服務(wù)器, 它們上面裝的 nginx 的路徑也太不相當(dāng), 當(dāng)我們拿到一個(gè)不熟悉的服務(wù)器時(shí), 我們怎么知道, 當(dāng)前運(yùn)行的nginx的目錄是哪一個(gè)呢,本文小編給大家介紹了兩種linux查找當(dāng)前系統(tǒng)nginx的路徑的方法,需要的朋友可以參考下
    2023-11-11
  • Nginx+Tomcat反向代理與負(fù)載均衡的實(shí)現(xiàn)

    Nginx+Tomcat反向代理與負(fù)載均衡的實(shí)現(xiàn)

    這篇文章給大家詳細(xì)介紹了如何實(shí)現(xiàn)Nginx+Tomcat反向代理與負(fù)載均衡,文中的流程步驟介紹的非常詳細(xì)對我們的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2023-07-07
  • nginx的location配置導(dǎo)致網(wǎng)關(guān)返回404問題

    nginx的location配置導(dǎo)致網(wǎng)關(guān)返回404問題

    這篇文章主要介紹了nginx的location配置導(dǎo)致網(wǎng)關(guān)返回404問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • 詳解Nginx服務(wù)器中配置Sysguard模塊預(yù)防高負(fù)載的方案

    詳解Nginx服務(wù)器中配置Sysguard模塊預(yù)防高負(fù)載的方案

    這篇文章主要介紹了詳解Nginx服務(wù)器中配置Sysguard模塊預(yù)防高負(fù)載的方案,該模塊由阿里巴巴的團(tuán)隊(duì)開發(fā),能夠設(shè)置負(fù)載閥值,比較強(qiáng)大,需要的朋友可以參考下
    2016-01-01
  • Nginx的mirror指令示例配置

    Nginx的mirror指令示例配置

    這篇文章主要介紹了Nginx的mirror指令能干啥?mirror 指令提供的核心功能就是流量復(fù)制, 至于流量復(fù)制要用來干嘛,這個(gè)就各取所需了,需要的朋友可以參考下
    2022-05-05

最新評論