应使用 proxy_cookie_flags 指令强制添加 httponly 标志,该指令专用于重写上游响应 set-cookie 头的标志位,仅影响 cookie 安全属性,不修改 name/value,要求 nginx ≥ 1.19.3。

要在 Nginx 反向代理中为上游服务返回的 Cookie 强制添加 HttpOnly 标志,核心是使用 proxy_cookie_flags 指令 —— 它专用于重写响应头中的 Set-Cookie 字段标志位,且无需修改后端代码。
理解 proxy_cookie_flags 的作用范围
该指令只影响 Nginx 从上游服务器收到的 Set-Cookie 响应头,对客户端发来的请求头中的 Cookie 无影响。它不会新增 Cookie,也不会修改 Cookie 的 name 或 value,仅追加或覆盖标志位(如 HttpOnly、Secure、SameSite)。
注意:必须确保 Nginx 版本 ≥ 1.19.3,该指令才可用;旧版本需升级或改用其他方案(如 sub_filter,但不推荐,易出错)。
基础配置:为所有匹配路径的 Cookie 添加 HttpOnly
在对应 location 块中加入以下配置:
proxy_cookie_flags ~ httponly;
说明:
• ~ 表示正则匹配模式,适用于所有 Cookie(无论名称);
• httponly 会为每个 Set-Cookie 头强制添加 HttpOnly 标志;
• 若原 Cookie 已含 HttpOnly,该指令不会重复添加,也无副作用。
进阶控制:按 Cookie 名称精细化设置
可结合正则精准匹配特定 Cookie,避免“一刀切”。例如只给 sessionid 和 auth_token 加 HttpOnly:
FastAPI + Flask 混合部署最佳实践,解决路由定义、API 代理等常见问题,适用于同时运行 FastAPI API 与 Flask 前端的场景。
proxy_cookie_flags ~* "^(sessionid|auth_token)$" httponly;
常见写法说明:
• ~* 表示忽略大小写的正则匹配;
• 第一个参数是 Cookie 名称的正则表达式,必须用引号包裹;
• 后续参数为要设置的标志,支持多个(如 httponly secure samesite=lax);
• 不匹配的 Cookie 不受影响,保持原有标志。
配合其他安全标志一起启用
生产环境建议组合使用,提升整体安全性:
- 始终启用
HttpOnly:防止 XSS 窃取 Cookie - 搭配
Secure:确保只在 HTTPS 连接中发送(需全站启用 HTTPS) - 明确设置
SameSite:推荐samesite=lax或samesite=strict,Chrome 80+ 默认行为已收紧
完整示例:
proxy_cookie_flags ~ httponly secure samesite=lax;
⚠️ 注意:Secure 标志仅在 $scheme 为 https 时生效;若 Nginx 前有 TLS 卸载设备(如 CDN),需通过 X-Forwarded-Proto 判断,并配合 proxy_set_header X-Forwarded-Proto $scheme; 传递协议信息。










