设置 proxy_pass_request_headers off 可关闭客户端原始请求头透传;需配合 proxy_set_header 显式设置 X-Real-IP、X-Forwarded-Proto、Host 等必要头,适用于安全管控、指纹隐藏及内部系统对接场景。

直接设置 proxy_pass_request_headers off; 即可关闭向后端透传所有客户端原始请求头。
基础配置写法
在对应 location、server 或 http 块中添加:
proxy_pass_request_headers off;
该指令会阻止 Nginx 将客户端发来的原始请求头(如 User-Agent、Referer、Accept-Language 等)转发给后端。Nginx 仍会发送自己生成的代理头(如通过 proxy_set_header 显式设置的),但不会透传任何来自客户端的原始头字段。
配合 proxy_set_header 精确控制传递内容
关闭自动透传后,必须显式用 proxy_set_header 添加后端真正需要的头,否则后端可能收不到关键信息:
- 仍需传递真实 IP:
proxy_set_header X-Real-IP $remote_addr; - 仍需声明协议:
proxy_set_header X-Forwarded-Proto $scheme; - 仍需设置 Host:
proxy_set_header Host $proxy_host;(推荐)或固定值 - 避免遗漏 WebSocket 支持头(如需):
proxy_set_header Upgrade $http_upgrade;和Connection "upgrade";
典型适用场景
该配置适合对后端输入严格管控的环境,例如:
- 后端服务不信任任何客户端输入,只接受 Nginx 主动构造的头
- 防止恶意构造的
Origin、Host、X-Forwarded-For等头触发安全漏洞 - 统一出口指纹,隐藏用户浏览器特征(如清空
User-Agent) - 与内部系统对接,要求请求头精简、可审计、无冗余
验证是否生效
修改后务必验证后端实际收到的请求头:
- 用
curl -v http://your-domain/api/test查看 Nginx 发往后端的请求(可通过后端日志或调试接口输出 headers) - 确认原始客户端头(如
Accept-Encoding、Cookie等)已消失,仅保留你proxy_set_header明确设置的头 - 检查后端功能是否正常,尤其重定向、IP 获取、协议识别等是否受影响











