nginx 反向代理(proxy_pass)cookie,session丟失問題


nginx 反向代理(proxy_pass)cookie,session丟失問題

1、丟失原因

請求的接口地址經過反向代理后,所攜帶的 cookie 並沒有一同攜帶到反向代理的地址。因此就導致了 session 失效。


2、語法

語法: proxy_cookie_path path replacementpath就是你要替換的路徑 replacement 就是要替換的值


3、可能出現場景

假設域名為(主域名情況):ibuzheng.com

  • 只進行host、端口轉換,cookie 不會改變
## 場景一:代理的地址與項目同名(假設項目名為:itest,端口號為8081)
location /itest { ##注意此處,跟項目同名
        proxy_pass   http://127.0.0.1:8080/itest;
 }
## 以上這種情況,因為反向地址依舊與項目同名,只是做了項目端口號轉向,因此 cookie 不會丟失
  • 路徑改變,需要重新配置 cookie 執行路徑
## 場景二:代理的地址與項目不同
 location /proxy_path { ##注意此處,跟項目不同名(proxy_path 代理地址)
        proxy_pass   http://localhost:8080/projectName;
        proxy_cookie_path  /projectName /proxy_path;
  }

上述,proxy_cookie_path 的意思為:將原本發送給項目 /projectName 的重新指向發送給 proxy_path

假設域名為(子域名情況):ibuzheng.com/policy

## 場景:代理的地址與項目不同
 location /businessSrver { ##注意此處,跟項目不同名(proxy_path 代理地址)
        proxy_pass   http://localhost:8080/projectName;
        proxy_cookie_path  /projectName /policy/businessSrver;
        ## proxy_cookie_path  /projectName /businessSrver;  ## 錯誤示范,這個無法獲取到 cookie 下面圖片地址
  }

上述,proxy_cookie_path 的意思為:將原本發送給項目 /projectName 的重新指向發送給 /policy/businessSrver

ps:如果出現cookie還未攜帶發送的情況,可以打開F12,查看一下 cookies 發送失敗具體發送到哪里,是否與代理接口地址一致。

圖:1、為傳送失敗,2、為傳送成功


免責聲明!

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



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