在Nginx的http块中配置server_tokens off可全局隐藏响应头及错误页中的版本号,仅显示Server: nginx;必须写在主配置文件http{}内同级位置,重载后用curl验证生效。

直接在 Nginx 的 http 块中添加 server_tokens off;,就能全局隐藏所有站点响应头和错误页中的版本号,只显示 Server: nginx,不带具体版本(如 nginx/1.24.0),这是最有效、最标准的安全加固方式。
必须写在 http 块里,位置不能错
该指令只在 http { } 作用域内生效,写在 server 或 location 块中无效——Nginx 不支持按站点单独关闭版本号显示。常见错误是误加到某个网站的配置文件(如 /www/server/panel/vhost/nginx/xxx.conf)里,结果改了也没用。
- 正确路径:编辑主配置文件
/www/server/nginx/conf/nginx.conf - 找到
http {开头的位置,在其后第一层缩进处(即与include mime.types;同级)添加一行:server_tokens off; - 删掉其他地方重复写的
server_tokens行,避免冲突 - 注意分号不能漏,也不能写成
server_tokens = off或加引号
修改后必须重载,不是重启
保存配置后,必须执行重载操作,让新设置即时生效,同时保持现有连接不断开:
- 在宝塔面板:右上角点击「重载配置」(不是「重启」或「启动」)
- 命令行操作:
nginx -t && nginx -s reload(先校验语法再重载)
验证是否真正生效
重载完成后,用 curl 检查两个地方:
- 访问任意正常页面:
curl -I https://your-domain.com,响应头中应为Server: nginx,而非Server: nginx/1.24.0 - 访问一个不存在的路径(如
/nonexistent),查看 404 错误页源码,确认里面不再出现nginx/1.24.0或操作系统信息
注意事项和常见误区
这个配置只影响 Nginx 自身输出的 Server 头和错误页,不处理其他组件:
- 后端服务(如 PHP-FPM、Tomcat)仍可能暴露自己的 Server 头,需单独配置
proxy_hide_header Server或proxy_set_header Server ""(放在location块中、proxy_pass之后) - CDN(如 Cloudflare)可能覆盖或忽略该设置,需在其控制台同步关闭 Server 头
- 安全扫描工具仍可能通过指纹识别推测版本,因此建议配合定期升级 Nginx 主程序











