proxy_cookie_domain用于重写后端Set-Cookie响应头中的Domain属性,解决反向代理下Cookie跨域失效问题;支持精确替换、正则匹配及清空Domain三种用法,需配合proxy_pass在location块中配置。

proxy_cookie_domain 是 Nginx 用于修改上游服务器(如后端应用) Set-Cookie 响应头中 Domain 属性的关键指令,常用于反向代理场景下解决跨域 Cookie 无法携带的问题。它的核心作用是:当后端返回的 Cookie 指定了不匹配当前访问域名的 Domain(比如设为 backend.example.com),浏览器会拒绝存储或发送该 Cookie;Nginx 可在转发响应前重写这个值,使其适配前端访问域名(如 app.example.com)。
基础语法与常见写法
该指令必须放在 location 或 server 块中,且仅对通过 proxy_pass 转发的响应生效:
-
proxy_cookie_domain off;:关闭自动重写(默认行为) -
proxy_cookie_domain backend.example.com app.example.com;:将原始 Domain 值精确匹配并替换为新值 -
proxy_cookie_domain ~\.example\.com$ .example.com;:使用正则匹配并替换,注意开头的~表示启用正则,末尾$确保完整匹配域名后缀 -
proxy_cookie_domain "" ".example.com";:把原始 Domain 清空(即去掉 Domain 属性),让浏览器按当前请求域名自动设置(最常用、最稳妥的方式)
为什么推荐用 "" ".example.com"?
后端应用往往硬编码了 Cookie 的 Domain(比如设为 localhost 或内网域名),直接替换容易出错。清空原 Domain 后,浏览器会依据当前页面地址自动推导有效域:
安全更新和维护 CLI Proxy API(CPA)部署与配置。用于 CPA 镜像升级、配置变更、认证目录兼容修复、上线验证与回滚。适用于用户提到“CPA 更新/升级/配置改了/容器重建/回滚”等场景。
- 用户访问
https://app.example.com/→ Cookie 自动绑定到.example.com,子域间共享 - 用户访问
https://staging.app.example.com/→ 若未显式设 Domain,Cookie 默认只对当前完整主机名生效 - 加上
proxy_cookie_domain "" ".example.com";后,强制所有 Cookie 都设为Domain=.example.com,确保主站和子域通用
配合 proxy_cookie_path 一起用更稳妥
如果后端返回的 Cookie Path 也不匹配(比如是 /api/,但前端期望根路径可用),可同时配置:
-
proxy_cookie_path /api/ /;:把路径前缀从/api/替换为/ -
proxy_cookie_path ~^/api/(.*)$ /$1;:用正则做更灵活的路径映射 - 注意:这两个指令需放在
proxy_pass所在 location 内,且顺序无关,Nginx 会自动处理响应头
验证是否生效
部署后,打开浏览器开发者工具 → Application(或 Storage)→ Cookies,查看响应头中的 Set-Cookie 字段:
- 原始后端响应可能是:
Set-Cookie: session=abc; Domain=localhost; Path=/api/ - 经 Nginx 处理后应变为:
Set-Cookie: session=abc; Domain=.example.com; Path=/ - 若仍看到旧 Domain 或 Path,检查配置是否在正确的 location 块、是否被其他 location 覆盖、Nginx 是否已重载(
nginx -s reload)

















