直接在 Nginx 的 http 块中添加 server_tokens off; 即可全局隐藏响应头和错误页中的版本号,仅显示 Server: nginx;该指令必须置于 http { } 作用域内才生效,写在 server 或 location 块无效,需删除重复配置、检查语法后执行 reload 验证,并同步处理 PHP、后端服务及系统横幅等泄露点。

直接在 Nginx 的 http 块中添加 server_tokens off;,就能全局隐藏响应头和错误页中的版本号,只显示 Server: nginx 或完全不带版本数字。这是最有效、最稳妥的基础安全加固方式,不改变功能,也不依赖重编译。
必须写在 http 块里,位置不能错
该指令只在 http { } 作用域内生效,写在 server 或 location 块中无效(尤其旧版本 Nginx 1.9.11 之前)。常见错误是误加到某个站点配置文件(如宝塔的 /www/server/panel/vhost/nginx/xxx.conf)里,结果配置不生效。
- 正确路径:编辑主配置文件(如
/etc/nginx/nginx.conf或/www/server/nginx/conf/nginx.conf) - 找到
http {开头的位置,在其第一层缩进处(与include mime.types;同级)添加一行:server_tokens off; - 删掉其他配置文件中重复出现的
server_tokens on;或server_tokens off;,避免被覆盖 - 注意分号不能漏,也不能写成
server_tokens = off或加引号
修改后必须重载,不是重启
保存配置后,要让新设置即时生效且不中断现有连接,必须执行平滑重载:
- 命令行操作:
sudo nginx -t && sudo nginx -s reload(先校验语法再重载) - 宝塔面板用户:进入【网站】→【设置】→【配置文件】,添加该行后,点击右上角「重载配置」(不是「重启」)
验证是否真正生效
重载完成后,用 curl 检查两个关键地方:
- 正常页面响应头:
curl -I https://your-domain.com | grep Server,应只看到Server: nginx,而非Server: nginx/1.24.0 - 错误页面源码:访问一个不存在的路径(如
/nonexistent),查看返回的 404 页面 HTML 源码,确认没有nginx/字样或操作系统信息
配合其他组件一起隐藏更彻底
Nginx 自身版本号只是信息泄露的一环,后端服务也可能暴露指纹:
- PHP:编辑
php.ini,设expose_php = Off,避免X-Powered-By头泄露 PHP 版本 - 后端代理(如 Tomcat、Node.js):在对应
location块中加proxy_hide_header Server;或proxy_set_header Server ""; - 系统登录横幅:清空
/etc/issue和/etc/issue.net,防止 SSH 登录前泄露系统版本


















