关于重定向session丢失避坑

起因:老数据进行重构迁移升级框架,嵌入企微内部,运用重定向页面,filter拦截请求进行权限控制,本地部署使用一切正常,但是一放置在k8s中会导致session丢失,而产生多次调用,而企微code5分钟内只能获取一次客户信息,问题产生。

1.排查问题

误区一 认为企微多次回调导致,多次请求实际为页面样式的请求。

误区二 认为多台kong网关导致,但一次请求一定是一台网关发起的,且负载会有一定策略

正确思路 一步步排查 首先打日志,看本地是否正常,尽量复现场景,通过ip及域名及原路径,代理路径分别尝试访问,发现代理路径有问题,后继续分析,原来path路径有差异会导致session丢失。

比如说一个没有经过代理的地址 : http://127.0.0.1/project cookie_path:/project
如果按照第二种方式代理 那么地址就是 : http://127.0.0.1/proxy_path cookie_path: /proxy_path
如果cookie_path与地址栏上的path不相符游览器就不会接受这个cookie,自然session就失效了

2.解决办法:

 nginx提供 path特殊配置 

proxy_cookie_path 的作用是用来改变cookie的路径

语法: proxy_cookie_path path replacement; path就是你要替换的路径 replacement 就是要替换的值 

原文

http://nginx.org/en/docs/http/ngx_http_proxy_module.html?&_ga=1.161910972.1696054694.1422417685#proxy_cookie_path

proxy_cookie_path  /project /proxy_path;
  location /proxy_path {
        proxy_pass   http://127.0.0.1:8080/;
        proxy_cookie_path  /project /proxy_path; # project 为你的项目名 也可用变量代替
    }
便可解决,但是一般来说运维组对于修改并不是很懂,这种情况只需要将项目特殊路径去掉,直接/便可解决问题。
参考:https://www.jianshu.com/p/34abe7eb6f0b
posted @ 2022-09-21 15:11  老小包的博客  阅读(459)  评论(0编辑  收藏  举报