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、为传送成功

posted @ 2021-01-20 14:08  _不正  阅读(3039)  评论(0编辑  收藏  举报