语法 参考nginx官方文档

语法:  proxy_cookie_path off;proxy_cookie_path path replacement;
默认: proxy_cookie_path off;
位置: http, server, location

该指令出现在 1.1.15 版中。
用于更改代理服务器响应头“Set-Cookie”值中的path文本。假设代理服务器返回带有属性“path=/two/some/uri/”的“Set-Cookie”头字段,经过以下配置后

proxy_cookie_path /two/ /;

会将此属性重写为“path=/some/uri/”。

使用原因

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 丢失导致无法登录等问题相关推荐

  1. nginx 反向代理时丢失端口的解决方案(转)

    nginx 反向代理时丢失端口的解决方案(转) 参考文章: (1)nginx 反向代理时丢失端口的解决方案(转) (2)https://www.cnblogs.com/shenyixin/p/1136 ...

  2. 带你了解什么是Nginx(实操反向代理-负载均衡)

    文章目录 一.前言 ①什么是Nginx? ②服务中为什么要使用Nginx原因? 二.安装Nginx 1.介绍 2.安装 ①在Linux系统安装nginx ②上传并解压到/usr/local/目录下 ③ ...

  3. Nginx运维之一 反向代理、动静分离、负载均衡

    Nginx运维之一 反向代理.动静分离.负载均衡 Nginx简述 Nginx 优势功能 Tengine 反向代理 正向代理 反向代理 动静分离 负载均衡 Nginx简述 Nginx是lgor Syso ...

  4. Nginx学习3:反向代理实例

    Nginx配置实例-反向代理1 目标 打开浏览器,在浏览器地址栏输入地址 www.123.com,跳转到 liunx 系统 tomcat 主页面中 准备工作 我们在官网下载好tomcat之后,直接将t ...

  5. Nginx-05:Nginx配置实例之反向代理2

    Nginx配置实例之反向代理 目的:使用nginx反向代理,根据访问的路径跳转到不同端口的服务器中,nginx监听端口为9001. 访问http://192.168.17.129:9001/edu/ ...

  6. Nginx-04:Nginx配置实例之反向代理1

    Nginx配置实例之反向代理 目的:在浏览器中数输入www.123.com跳转到tomcat主页. 1.准备工作 (1)安装tomcat,使用默认端口8080,进入tomcat的bin目录中,./st ...

  7. 如何在 FreeBSD 10.2 上安装 Nginx 作为 Apache 的反向代理

    如何在 FreeBSD 10.2 上安装 Nginx 作为 Apache 的反向代理 Nginx 是一款自由开源的 HTTP 和反向代理服务器,也可以用作 POP3/IMAP 的邮件代理服务器.Ngi ...

  8. nginx 1.16 配置反向代理,http,https,ssl

    需求 之前云服务上仅部署了门户网站,后来要做小程序开发,还有各项目网站.之前是通过域名+端口访问, 现改为启用二级域名,共用公网IP,80(http).443(https)端口,通过nginx按域名做 ...

  9. Nginx应用场景之反向代理

    本文来说下Nginx应用场景之反向代理的几个问题 文章目录 概述 正向代理 反向代理 Nginx反向代理优势 访问限制 概述 "Nginx是一款轻量级的HTTP服务器,采用事件驱动的异步非阻 ...

最新文章

  1. linux下编译与运行,Linux操作系统驱动编译与运行是怎样的?
  2. java reset_void reset()
  3. ArcGIS案例学习笔记4_2_水文分析批处理地理建模
  4. 苏宁易购实现逆势增长,但它的非电业务更超出意料
  5. error: Microsoft Visual C++ 14.0 or greater is required. Get it with “Microsoft C++ Build Tools“: h
  6. 大话设计模式:第27章 解释器模式
  7. Ansys workbench静应力分析基本流程
  8. 去除xp桌面图标阴影
  9. 计算机虚拟化技术试题,虚拟现实技术考试题及答案.doc
  10. 英语3500词(15/20)crime主题(2022.1.27)
  11. PCB添加图片或logo的方法
  12. 编写宏(macro)时遇到的小错误
  13. 3D游戏建模师薪水大概是多少?从人生经历来看
  14. 1360: 最大公约与最小公倍
  15. Linux简介云服务器环境搭建
  16. 上市十天高管大换血 甘李药业有隐疾?
  17. Zigbee疑难问题定位以及思路方法分享 (一)
  18. swift UI专项训练21 网页浏览器
  19. CAN总线整车电子电气架构设计培训
  20. PHP isset() 和 empty() 的使用

热门文章

  1. 金蝶KIS商贸版V7.0销售出库单增加整单优惠和成交金额字段
  2. 2021-11-18 WinFrom面试题 Winform中,怎么实现Form2中点击打开按钮,打开Form1,输入文本,再点击Form1中的“确定”按钮,把输入的值显示到Form2的文本框中?
  3. JS代码检查工具ESLint
  4. 模拟器玩《和平精英》匹配不到人,投屏吃鸡却火了?
  5. 上海著名综合性商厦一览
  6. IBM违规撬走合作伙伴客户被罚款超百亿元,给国内云厂商敲响了一记警钟
  7. 蓝桥杯比赛培训笔记(基于STCCT107D训练板)
  8. 分子生物学词汇(L~O)
  9. 3DMAX与MAYA的区别
  10. Auto IK Rigger:一个可以真·一键绑定的轻量级Blender插件