Nginx 使用 proxy |
您所在的位置:网站首页 › nginx配置跳转不生效 › Nginx 使用 proxy |
语法 参考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 使用 Demodemo1: 重点看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 |