Nginx 中正确指令为 proxy_hide_header,用于屏蔽后端响应头如 Server、X-Powered-By;需配合 server_tokens off 隐藏 Nginx 自身版本,进阶可借助 headers-more-nginx-module 彻底清除或重写头部。

在 Nginx 中,并没有名为 Proxy-Hide-Header 的官方指令。你可能指的是 proxy_hide_header —— 这是 Nginx 提供的用于屏蔽后端响应头的标准指令,常用于移除如 Server、X-Powered-By 等暴露后端技术栈和版本信息的敏感响应头。
确认要隐藏的敏感响应头
常见需隐藏的后端版本特征头包括:
-
Server:默认由后端(如 Apache、Tomcat、Node.js)返回,暴露服务类型与版本 -
X-Powered-By:常见于 PHP、ASP.NET、Express 等框架,泄露运行环境 -
X-AspNet-Version、X-Runtime、X-Backend-Server等自定义或框架特有头
使用 proxy_hide_header 屏蔽指定响应头
该指令必须放在 location 或 server 块中,且仅对代理响应(即 proxy_pass 后返回的内容)生效:
location / {
proxy_pass http://backend;
proxy_hide_header Server;
proxy_hide_header X-Powered-By;
proxy_hide_header X-AspNet-Version;
}
⚠️ 注意:proxy_hide_header 只是不转发这些头到客户端,并不会修改或删除后端实际返回的响应头本身。
⚠️ 已弃用 — 该技能已拆分为两个独立技能,以提升模块化程度:**webchat-https-proxy**(HTTPS/WSS 反向代理)和 **webchat-voi...**
补充:彻底隐藏 Server 头(Nginx 自身的)
若你还想隐藏 Nginx 自己输出的 Server 头(例如返回 Server: nginx/1.24.0),需配合 server_tokens off; 指令:
- 在
http、server或location块中添加:server_tokens off; - 该设置使 Nginx 返回
Server: nginx(无版本),或完全不发该头(取决于编译选项和版本) - 注意:某些旧版本仍会显示
nginx,如需彻底隐藏,需重新编译 Nginx 并修改源码,或通过第三方模块(如headers-more-nginx-module)实现
进阶:用 headers-more 模块完全清除或重写响应头
如果需要更精细控制(如删除任意头、设置空值、替换内容),可启用 headers-more-nginx-module:
- 安装后,可用
more_clear_headers彻底清除响应头:
more_clear_headers 'Server' 'X-Powered-By';
- 也可用
more_set_headers主动设为安全值(如more_set_headers "Server: web-server";) - 注意:该模块非 Nginx 默认内置,需编译时添加或使用已集成该模块的发行版(如 OpenResty)
不复杂但容易忽略:只加 proxy_hide_header 不足以全面收敛指纹,务必结合 server_tokens off 和后端自身配置(如 Spring Boot 的 server.error.include-message=never)协同防护。


















