最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

背景

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

location /health/ {
  proxy_pass http://192.168.40.159:8081/health/; #無(wú)問(wèn)題的配置
 }

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

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

定位

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

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

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

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

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

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

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

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

解決

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

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

重啟nginx,問(wèn)題解決。

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

相關(guān)文章

  • Windows下Nginx的啟動(dòng)停止等基本操作命令詳解

    Windows下Nginx的啟動(dòng)停止等基本操作命令詳解

    在Windows下使用Nginx,我們需要掌握一些基本的操作命令,今天為大家分享幾個(gè)Windows下操作Nginx的基本命令
    2018-10-10
  • Nginx代理接口訪問(wèn)返回404的實(shí)現(xiàn)示例

    Nginx代理接口訪問(wèn)返回404的實(shí)現(xiàn)示例

    因?yàn)椴煌瑯I(yè)務(wù)系統(tǒng)間有接口調(diào)用,存在跨域問(wèn)題,為了解決同源策略,需要將接口通過(guò)nginx去轉(zhuǎn)發(fā),本文主要介紹了Nginx代理接口訪問(wèn)返回404的實(shí)現(xiàn)示例,感興趣的可以了解一下
    2024-06-06
  • Mac M1 Nginx 配置多站點(diǎn)的實(shí)現(xiàn)

    Mac M1 Nginx 配置多站點(diǎn)的實(shí)現(xiàn)

    這篇文章主要介紹了Mac M1 Nginx 配置多站點(diǎn)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • 解決502?Bad?Gateway錯(cuò)誤的詳細(xì)指南與實(shí)例

    解決502?Bad?Gateway錯(cuò)誤的詳細(xì)指南與實(shí)例

    這篇文章主要給大家介紹了關(guān)于解決502?Bad?Gateway錯(cuò)誤的詳細(xì)指南與實(shí)例,502 Bad Gateway錯(cuò)誤通常是由于網(wǎng)關(guān)或代理服務(wù)器在嘗試訪問(wèn)上游服務(wù)器(通常是Web服務(wù)器)時(shí)未能及時(shí)接收到響應(yīng)導(dǎo)致的,文中將解決辦法介紹的非常詳細(xì),需要的朋友可以參考下
    2024-05-05
  • 聊聊配置?Nginx?訪問(wèn)與錯(cuò)誤日志的問(wèn)題

    聊聊配置?Nginx?訪問(wèn)與錯(cuò)誤日志的問(wèn)題

    這篇文章主要介紹了配置?Nginx?訪問(wèn)與錯(cuò)誤日志,Nginx是一個(gè)開(kāi)放源代碼的高性能HTTP和反向代理服務(wù)器,負(fù)責(zé)處理Internet上某些最大站點(diǎn)的負(fù)載,對(duì)Nginx?錯(cuò)誤日志相關(guān)知識(shí)感興趣的朋友一起看看吧
    2022-05-05
  • Nginx與Tomcat實(shí)現(xiàn)動(dòng)靜態(tài)分離和負(fù)載均衡

    Nginx與Tomcat實(shí)現(xiàn)動(dòng)靜態(tài)分離和負(fù)載均衡

    本篇文章主要介紹了Nginx與Tomcat實(shí)現(xiàn)動(dòng)靜態(tài)分離和負(fù)載均衡,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2016-10-10
  • 使用Nginx解決跨域訪問(wèn)問(wèn)題的完整案例

    使用Nginx解決跨域訪問(wèn)問(wèn)題的完整案例

    在現(xiàn)代的Web開(kāi)發(fā)中,跨域訪問(wèn)是一種常見(jiàn)的需求,由于瀏覽器的同源策略,不同域名之間的訪問(wèn)存在一定的限制,本文將介紹如何使用Nginx來(lái)解決跨域訪問(wèn)的問(wèn)題,并通過(guò)一個(gè)完整的實(shí)例來(lái)展示,需要的朋友可以參考下
    2024-03-03
  • Nginx基于gzip壓縮提高訪問(wèn)速度

    Nginx基于gzip壓縮提高訪問(wèn)速度

    這篇文章主要介紹了Nginx基于gzip壓縮提高訪問(wèn)速度,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Nginx配置文件nginx.conf的常用配置方法

    Nginx配置文件nginx.conf的常用配置方法

    這篇文章主要介紹了Nginx配置文件nginx.conf的常用配置方法,作為剛開(kāi)始著手搭建Nginx服務(wù)器的一個(gè)指南,需要的朋友可以參考下
    2015-07-07
  • nginx文件強(qiáng)制下載的配置方法

    nginx文件強(qiáng)制下載的配置方法

    這篇文章主要介紹了nginx文件強(qiáng)制下載的配置方法,需要的朋友可以參考下
    2016-02-02

最新評(píng)論

铜鼓县| 临洮县| 德化县| 龙江县| 淮北市| 龙井市| 乐安县| 锡林郭勒盟| 茂名市| 济源市| 新野县| 北宁市| 葵青区| 疏附县| 二手房| 综艺| 廉江市| 泰宁县| 绍兴市| 阳城县| 瑞丽市| 铜鼓县| 凤阳县| 陇南市| 肇源县| 宜良县| 桐庐县| 西乡县| 隆尧县| 嘉祥县| 镇康县| 读书| 休宁县| 荥阳市| 平昌县| 清河县| 泰顺县| 全州县| 石河子市| 石台县| 柳州市|