nginx通过proxy_pass反向代理cookie、session丢失的问题

nginx通过proxy_pass反向代理cookie、session丢失的问题
强烈推介IDEA2020.2破解激活,IntelliJ IDEA 注册码,2020.2 IDEA 激活码

1.为什么cookie会丢失?

一个没有经过代理的地址如:http://127.0.0.1/project,它cookie的path为:/project

但如果做了代理的处理,如地址:http://127.0.0.1/proxy_path,那cookie的path就变为了代理地址:/proxy_path

如果cookie的path与地址栏上的path不相符游览器就不会接受这个cookie,那每次请求都会重新生成cookie,cookie中存放这sessionId,自然session也就跟着失效了。

2.nginx中proxy_cookie_path 的用法

proxy_cookie_path 的作用是用来改变cookie的路径语法:proxy_cookie_path path replacement;

path是你要替换的路径 replacement 就是要替换为的值。详情可以去nginx 官网看看传送门

3.下面分别分三种情况处理

1.host、端口转换,cookie不会丢失:
    location /project {
   
        proxy_pass   http://127.0.0.1:8080/project;
    }
2.路径也变化,则需要设置cookie的路径转换:
    location /proxy_path {
   
        proxy_pass   http://127.0.0.1:8080/project;
        proxy_cookie_path  /project /proxy_path;
    }
3.直接代理本地端口:
    location /proxy_path {
   
        proxy_pass   http://127.0.0.1:8080/;
        proxy_cookie_path  /project /proxy_path; # project 为你的项目名 也可用变量代替
    }
本文来源MrKorbin,由架构君转载发布,观点不代表Java架构师必看的立场,转载请标明来源出处:https://javajgs.com/archives/25287

发表评论