Nginx 使用 proxy

您所在的位置:网站首页 nginx配置跳转不生效 Nginx 使用 proxy

Nginx 使用 proxy

2024-07-12 08:52| 来源: 网络整理| 查看: 265

语法 参考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/bB:假设接口返回的“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)



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3