直接在 nginx 主配置文件的 http { } 块内添加 server_tokens off; 即可全局隐藏响应头及错误页中的版本号,仅显示 server: nginx;该指令仅在 http 作用域生效,写在 server 或 location 块无效;需删除其他位置重复配置,检查语法后执行 nginx -s reload 平滑重载,并用 curl -i 和访问 /nonexistent 验证是否彻底隐藏,同时须同步关闭 php、cdn、反向代理等关联泄露点。

必须写在 http 块里才真正生效
这个指令只在 http 作用域下起作用。写在 server 或 location 块里无效,Nginx 不支持按站点单独关闭版本号显示。
- 打开主配置文件:
/etc/nginx/nginx.conf(通用系统)或/www/server/nginx/conf/nginx.conf(宝塔) - 找到
http {开头的位置,在它内部、与include mime.types;同级处添加一行:server_tokens off; - 删掉其他位置(比如某个网站的 conf 文件里)重复写的
server_tokens行,避免覆盖或冲突 - 注意分号不能漏,也不能写成
server_tokens = off或加引号
改完要重载,不是重启
修改后必须执行平滑重载,才能让新配置即时生效,同时不中断现有连接。
- 先验证语法:
sudo nginx -t,返回 success 才继续 - 再重载配置:
sudo nginx -s reload或sudo systemctl reload nginx - 宝塔用户直接点击面板右上角「重载配置」按钮(图标是两个循环箭头)
- 不要用
restart,会断开正在处理的请求
验证是否真的隐藏成功
重载后必须立刻检查两个关键地方:
- 查响应头:
curl -I https://your-domain.com | grep Server,应只看到Server: nginx或完全不显示 - 测错误页:访问一个不存在的路径(如
/nonexistent),查看返回 HTML 源码,确认没有nginx/字样
别忘了关掉其他泄露点
server_tokens off 只管 Nginx 自身,真实环境中还有多个信息泄露渠道:
-
PHP:编辑
php.ini,设expose_php = Off,避免X-Powered-By头泄露版本 -
错误页残留:默认
50x.html页面底部仍含版本文字,可手动清空或替换为自定义静态页 -
CDN 覆盖:Cloudflare、阿里云全站加速等会默认透出源站信息,需在控制台关闭“源站信息透出”或自定义
Server头 -
反向代理场景:若上游服务返回了
Server头,需在对应location块中加proxy_hide_header Server;(放在proxy_pass之后)











