可通过配置 Nginx 隐藏或移除 Server 响应头以降低指纹泄露风险:用 server_tokens off 隐藏版本号,用 more_set_headers "Server: " 清空或伪装,反向代理时用 proxy_hide_header Server 屏蔽后端头,并需测试验证生效。

可以通过配置 Nginx 网关主动移除或覆盖 Server 响应头,有效防止攻击者通过 HTTP 响应头识别后端服务类型与版本,降低被针对性漏洞利用的风险。
关闭或隐藏 Server 头部
Nginx 默认会在响应头中返回 Server: nginx/1.24.0 这类信息。可通过以下方式控制:
- 在
http、server或location块中添加server_tokens off;—— 这会隐藏 Nginx 版本号,仅保留Server: nginx - 若需完全移除
Server头(如设为空或自定义值),需使用more_set_headers指令(需安装 headers-more-nginx-module):more_set_headers "Server: ";(清空)或more_set_headers "Server: WebProxy";(伪装) - 注意:纯开源 Nginx 不支持直接删除
Server头,未安装扩展模块时只能用server_tokens off降级显示
过滤上游服务返回的 Server 头
当 Nginx 作为反向代理时,后端(如 Tomcat、Apache、Spring Boot)可能自带 Server 头,需在 proxy 配置中清除:
- 在
location或upstream对应的proxy_set_header区域不生效;真正起作用的是proxy_hide_header - 添加
proxy_hide_header Server;可屏蔽后端返回的Server头(Nginx 默认不透传该头,但显式声明更稳妥) - 若后端还返回
X-Powered-By、X-AspNet-Version等指纹头,也建议一并隐藏:proxy_hide_header X-Powered-By;proxy_hide_header X-AspNet-Version;
验证是否生效
配置完成后务必测试,避免遗漏:
- 使用 curl 查看响应头:
curl -I https://your-domain.com或curl -I http://localhost - 关注输出中是否还有
Server:行;若有,检查配置是否加载(nginx -t)、是否在正确作用域(如location内漏写proxy_hide_header) - 浏览器开发者工具的 Network 标签页也可直观查看响应头,但注意部分浏览器会自动省略空值头
补充建议
隐藏版本号只是基础安全加固的一环,还需配合其他措施提升整体健壮性:
- 保持 Nginx 和后端服务及时更新,修复已知漏洞,而非仅依赖“隐藏”规避探测
- 避免在错误页面(如 404、502)中泄露技术栈信息,可自定义 error_page 并关闭
server_tokens - 结合 WAF 或 API 网关层做更细粒度的头部过滤与请求特征识别










