nginx 反向代理请求cookie丢失问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx 反向代理请求cookie丢失问题相关的知识,希望对你有一定的参考价值。
参考技术A 比如说一个没有经过代理的地址 : http://127.0.0.1/project cookie_path:/project如果用nginx代理 那么地址就是 : http://127.0.0.1/proxy_path cookie_path: /proxy_path
根据浏览器同源策略, 要实现跨域访问,方法一般有:
1、后端配置允许跨域
2、通过nginx等做请求转发.
nginx做转发时,如果cookie_path与地址栏上的path不相符浏览器就不会发送这个cookie,自然cookie就失效了
proxy_cookie_path 的作用是用来改变cookie的路径
语法: proxy_cookie_path path replacement; path就是你要替换的路径 replacement 就是要替换的值
详情可以去nginx 官网看看
location /project
proxy_pass http://127.0.0.1:8080/project;
location /proxy_path
proxy_pass http://127.0.0.1:8080/project;
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://blog.csdn.net/isyoungboy/article/details/81382193
版权声明:本文为博主文章修改而来
nginx使用proxy_pass反向代理时cookie丢失问题解决方案
今天在测试环境进行测试时发现有个会话页面无论如何都进不去了,经过调试发现,JSESSIONID的path和我访问应用的path不相同!即我访问的应用是/xxx/,而JSESSIONID的path是/yyy/,这就是问题的根源!于是我就修改应用的sessionCookiePath,说白了就是在项目根路径下的META-INF下新建一个context.xml文件,具体内容为:
<?xml version="1.0" encoding="UTF-8"?>
<Context useHttpOnly="true" sessionCookiePath="/xxx/" />
在测试环境一试,成功通过,即只要两个path不一致,就会重现测试环境上的问题,怀着喜悦的心情上测试环境进行测试,结果居然还是不行,调试发现JSESSIONID的path还是原来的/yyy/,居然没有起作用!
后来经过思考,修改tomcat是不行的,而应该修改nginx,即通过nginx修改JSE
以上是关于nginx 反向代理请求cookie丢失问题的主要内容,如果未能解决你的问题,请参考以下文章