Nginx 使用 proxy_cookie_path 解决反向代理 cookie 丢失导致无法登录等问题
语法 参考nginx官方文档
语法: proxy_cookie_path off;proxy_cookie_path path replacement;
默认: proxy_cookie_path off;
位置: http, server, location
proxy_cookie_path /two/ /;
使用原因
cookie 的 path 与地址栏上的 path 不一致
浏览器就不会接受这个 cookie,无法传入 JSESSIONID 的 cookie
导致登录验证失败。
解决方案
修改cookie的path值,使得path路径为当前url或者是当前url的父级。
假设cookie不共享的情况:
- A:假设地址栏url为: /a/b
- B:假设接口返回的“Set-Cookie”值中的path值:/c/d
解决方案列举:
- 更改B的值为/a/b,则可共享
- 更改B的值为/a, 则可共享
- 更改B的值为/, 则可共享
使用场景
当 nginx 配置的反向代理的路径和源地址路径不一致时使用
例如在前端代码异步调用后台接口的情况下,假设当前静态页面url为:http:www.xxx.com/shop/
, 异步调用后端接口返回的响应头字段Set-Cookies中的 Path为 Path:/background-api
, 可见/shop和/background-api不是从属关系,需要调整响应头中的Set-cookies 中的Path为:Path:/shop/background-api
,在nginx中可以通过设置proxy_cookie_path 的值来改变响应给客户端的Set-cookies 中的Path
使用 Demo
demo1:
重点看proxy_cookie_path
NGINX # elastic-job 代理配置location /etc-job/api/ {proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_pass http://10.55.3.139:8088/api/;proxy_cookie_path / /etc-job/api/;proxy_set_header Cookie $http_cookie;}
参考来源:
Nginx 使用 proxy_cookie_path 解决反向代理 cookie 丢失导致无法登录的问题
demo2:
路径也变化,则需要设置cookie的路径转换
location /proxy_path {proxy_pass http://127.0.0.1:8080/project;proxy_cookie_path /project /proxy_path;
}
总结一下paht取值的规则:
当cookie的path设置了值不为null的时候,以设置的值为准。
当cookie的path为null时候,获取请求的URI的path值
1). 当URI的path值是以“/”结尾的时候,直接设置为cookie的path值
2). 当URI的path值不是以“/”结尾的时候,查看path里面是否有“/”
(1). 如果有“/”的话,直接截取到最后一个“/”,然后设置为cookie的path值。
(2). 如果没有“/”的话,将cookie的path设置为”/”。
参考来源:
https://blog.csdn.net/m0_37564426/article/details/106438204
其他相关:Nginx 反向代理及 Cookie 相关问题 - 简书 (jianshu.com)
Nginx 使用 proxy_cookie_path 解决反向代理 cookie 丢失导致无法登录等问题相关推荐
- nginx 反向代理时丢失端口的解决方案(转)
nginx 反向代理时丢失端口的解决方案(转) 参考文章: (1)nginx 反向代理时丢失端口的解决方案(转) (2)https://www.cnblogs.com/shenyixin/p/1136 ...
- 带你了解什么是Nginx(实操反向代理-负载均衡)
文章目录 一.前言 ①什么是Nginx? ②服务中为什么要使用Nginx原因? 二.安装Nginx 1.介绍 2.安装 ①在Linux系统安装nginx ②上传并解压到/usr/local/目录下 ③ ...
- Nginx运维之一 反向代理、动静分离、负载均衡
Nginx运维之一 反向代理.动静分离.负载均衡 Nginx简述 Nginx 优势功能 Tengine 反向代理 正向代理 反向代理 动静分离 负载均衡 Nginx简述 Nginx是lgor Syso ...
- Nginx学习3:反向代理实例
Nginx配置实例-反向代理1 目标 打开浏览器,在浏览器地址栏输入地址 www.123.com,跳转到 liunx 系统 tomcat 主页面中 准备工作 我们在官网下载好tomcat之后,直接将t ...
- Nginx-05:Nginx配置实例之反向代理2
Nginx配置实例之反向代理 目的:使用nginx反向代理,根据访问的路径跳转到不同端口的服务器中,nginx监听端口为9001. 访问http://192.168.17.129:9001/edu/ ...
- Nginx-04:Nginx配置实例之反向代理1
Nginx配置实例之反向代理 目的:在浏览器中数输入www.123.com跳转到tomcat主页. 1.准备工作 (1)安装tomcat,使用默认端口8080,进入tomcat的bin目录中,./st ...
- 如何在 FreeBSD 10.2 上安装 Nginx 作为 Apache 的反向代理
如何在 FreeBSD 10.2 上安装 Nginx 作为 Apache 的反向代理 Nginx 是一款自由开源的 HTTP 和反向代理服务器,也可以用作 POP3/IMAP 的邮件代理服务器.Ngi ...
- nginx 1.16 配置反向代理,http,https,ssl
需求 之前云服务上仅部署了门户网站,后来要做小程序开发,还有各项目网站.之前是通过域名+端口访问, 现改为启用二级域名,共用公网IP,80(http).443(https)端口,通过nginx按域名做 ...
- Nginx应用场景之反向代理
本文来说下Nginx应用场景之反向代理的几个问题 文章目录 概述 正向代理 反向代理 Nginx反向代理优势 访问限制 概述 "Nginx是一款轻量级的HTTP服务器,采用事件驱动的异步非阻 ...
最新文章
- linux下编译与运行,Linux操作系统驱动编译与运行是怎样的?
- java reset_void reset()
- ArcGIS案例学习笔记4_2_水文分析批处理地理建模
- 苏宁易购实现逆势增长,但它的非电业务更超出意料
- error: Microsoft Visual C++ 14.0 or greater is required. Get it with “Microsoft C++ Build Tools“: h
- 大话设计模式:第27章 解释器模式
- Ansys workbench静应力分析基本流程
- 去除xp桌面图标阴影
- 计算机虚拟化技术试题,虚拟现实技术考试题及答案.doc
- 英语3500词(15/20)crime主题(2022.1.27)
- PCB添加图片或logo的方法
- 编写宏(macro)时遇到的小错误
- 3D游戏建模师薪水大概是多少?从人生经历来看
- 1360: 最大公约与最小公倍
- Linux简介云服务器环境搭建
- 上市十天高管大换血 甘李药业有隐疾?
- Zigbee疑难问题定位以及思路方法分享 (一)
- swift UI专项训练21 网页浏览器
- CAN总线整车电子电气架构设计培训
- PHP isset() 和 empty() 的使用
热门文章
- 金蝶KIS商贸版V7.0销售出库单增加整单优惠和成交金额字段
- 2021-11-18 WinFrom面试题 Winform中,怎么实现Form2中点击打开按钮,打开Form1,输入文本,再点击Form1中的“确定”按钮,把输入的值显示到Form2的文本框中?
- JS代码检查工具ESLint
- 模拟器玩《和平精英》匹配不到人,投屏吃鸡却火了?
- 上海著名综合性商厦一览
- IBM违规撬走合作伙伴客户被罚款超百亿元,给国内云厂商敲响了一记警钟
- 蓝桥杯比赛培训笔记(基于STCCT107D训练板)
- 分子生物学词汇(L~O)
- 3DMAX与MAYA的区别
- Auto IK Rigger:一个可以真·一键绑定的轻量级Blender插件