proxy_pass_header用于放行Nginx默认拦截的上游响应头(如Date、Server、X-Accel-*等),确保X-Cache-Policy、X-Release-Version等业务头透传至CDN,以支持缓存策略、灰度路由与AB测试。

proxy_pass_header 的作用是让 Nginx 主动“放行”某些默认被屏蔽的响应头,确保它们能透传到客户端或 CDN 边缘节点——这对让 CDN 正确识别自定义缓存策略、灰度标识、AB 测试标签等业务头至关重要。
哪些头默认被 Nginx 拦截?
Nginx 在反向代理时,默认会过滤掉部分上游响应头,包括:
• Date
• Server
• X-Pad
• 所有以 X-Accel- 开头的头(如 X-Accel-Expires、X-Accel-Redirect)
这些头不会出现在最终返回给客户端的响应中,除非显式启用透传。
为什么 CDN 需要看到特定业务头?
很多 CDN 厂商(如 Cloudflare、阿里云全站加速、腾讯云 CDN)支持基于自定义响应头做边缘行为控制,例如:
• X-Cache-Policy: public, max-age=3600 → 触发 CDN 强制缓存 1 小时
• X-Release-Version: v2.3.1 → 用于灰度流量路由
• X-AB-Group: control → 参与 A/B 实验分流
若这些头被 Nginx 默认拦截,CDN 就完全收不到,相关策略失效。
⚠️ 已弃用 — 该技能已拆分为两个独立技能,以提升模块化程度:**webchat-https-proxy**(HTTPS/WSS 反向代理)和 **webchat-voi...**
如何用 proxy_pass_header 放行业务头?
在对应 location 块中添加指令即可(注意:必须写在 proxy_pass 同一作用域):
• 若头名为 X-Cache-Policy:
proxy_pass_header X-Cache-Policy;
• 若头名为 X-Release-Version:
proxy_pass_header X-Release-Version;
• 支持多次使用,每行一个头;不区分大小写,但建议保持原始命名风格。
⚠️ 注意:不能用于已由 proxy_hide_header 显式隐藏的头(二者冲突时,后出现的生效)。
配合 add_header 实现更可靠透传
仅靠 proxy_pass_header 不够——它只“解除拦截”,不“生成头”。如果后端未返回该头,CDN 依然收不到。因此常见做法是:
• 后端负责输出语义化业务头(如 PHP 中 header('X-Release-Version: v2.3.1'))
• Nginx 用 proxy_pass_header 确保其不被过滤
• 必要时用 add_header ... always 补充兜底值(例如当后端异常未返回时)
这样既尊重后端逻辑,又保障 CDN 行为可控。










