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丢失问题的主要内容,如果未能解决你的问题,请参考以下文章

nginx反向代理后丢失origin参数

nginx 反向代理时丢失端口的解决方案

nginx 反向代理时丢失端口的解决方案

nginx 反向代理时丢失端口的解决方案

Nginx搭建反向代理服务器过程详解

问题解决1:nginx反向代理丢失js、css问题