必须用 proxy_cookie_path 在 nginx 中重写 cookie path 以匹配前端访问路径,如后端设 path=/api/v1/、用户访问 /app/xxx,则配置 proxy_cookie_path /api/v1/ /app/;该指令须置于 location 块内、proxy_pass 之后且斜杠一致。

当后端应用部署在非根路径(如 /api/v1/)但前端通过 Nginx 以不同上下文(如 /app/ 或 /)访问时,它返回的 Set-Cookie: Path=/api/v1/ 会被浏览器拒绝携带——因为当前 URL 路径不以 /api/v1/ 开头。这时必须用 proxy_cookie_path 在 Nginx 层重写 Cookie 的 Path 值,使其匹配用户实际访问的路径。
明确匹配源路径再替换
后端生成的 Path 是什么,就写什么作为 source;目标值则填前端真实暴露的路径前缀。
- 若后端设
Path=/api/v1/,而用户访问的是/app/xxx,配置:proxy_cookie_path /api/v1/ /app/; - 若后端设
Path=/,但代理路径是/admin,配置:proxy_cookie_path / /admin/; - 注意末尾斜杠需一致:源路径带斜杠,目标也应带;否则可能部分匹配失败
放在正确的 location 块中且紧邻 proxy_pass
该指令只在 location 块内生效,且必须写在 proxy_pass 之后、其他 proxy_* 指令之前,否则常被忽略。
安全更新和维护 CLI Proxy API(CPA)部署与配置。用于 CPA 镜像升级、配置变更、认证目录兼容修复、上线验证与回滚。适用于用户提到“CPA 更新/升级/配置改了/容器重建/回滚”等场景。
- ✅ 正确示例:
location /app/ {<br> proxy_pass http://backend/;<br> proxy_cookie_path /api/v1/ /app/;<br> proxy_set_header Host $host;<br>} - ❌ 错误写法:
写在server块顶层、写在proxy_pass之前、或放在另一个不匹配的location里
支持正则和变量,适配动态场景
当后端路径结构多变或需提取路径片段时,可用正则表达式匹配并引用捕获组。
- 把所有
/v2/xxx替换为/api/xxx:proxy_cookie_path ~^/v2/(.*)$ /api/$1; - 忽略大小写匹配
/USER/并转为小写路径:proxy_cookie_path ~*^/USER/(.*)$ /user/$1; - 结合变量实现上下文路径透传(需配合
set指令定义变量)
搭配 proxy_redirect 和 rewrite 保持路径一致性
只改 Cookie 路径不够——后端返回的 Location 跳转头、API 响应体里的链接、静态资源路径等,也都得对齐前端路径,否则仍会出错。
- 重写响应头中的跳转地址:
proxy_redirect /api/v1/ /app/; - 将客户端请求重写为后端可识别格式:
rewrite ^/app/(.*)$ /api/v1/$1 break; - 向后端透传真实上下文,便于其生成正确链接:
proxy_set_header X-Forwarded-Prefix /app;










