在 Nginx 的 http 块中配置 server_tokens off; 并重载服务,可彻底隐藏版本号;还需同步关闭 PHP 的 expose_php、清理系统登录横幅等,实现多层信息防护。

直接在 Nginx 配置中启用 server_tokens off; 是隐藏版本号最有效、最稳妥的方式。它能同时移除响应头中的 Server: nginx/1.24.0 字样,也让默认的 404、503 等错误页面不再显示版本信息。
一、在哪加?推荐写在 http 块里
打开主配置文件(通常是 /etc/nginx/nginx.conf),找到 http { ... } 区块,在里面添加这一行:
server_tokens off;
这样设置后,所有站点(包括未单独配置的虚拟主机)都会生效。如果只加在某个 server 块里,其他站点仍可能暴露版本号。
二、保存后必须重载,不能只重启
修改完配置,按顺序执行两步:
- 检查语法是否正确:
sudo nginx -t - 重载配置使生效:
sudo systemctl reload nginx或sudo nginx -s reload
注意:用 restart 会中断连接,而 reload 是平滑切换,不影响正在处理的请求。
三、验证是否真的隐藏成功
配置生效后,立刻用命令确认效果:
- 查响应头:
curl -I https://your-domain.com | grep Server,应只看到Server: nginx或完全不显示(取决于模块是否启用) - 测错误页:访问一个不存在的路径(如
/nonexistent),查看返回的 HTML 源码,确认没有nginx/字样
如果仍看到完整版本号,说明配置没生效或被其他配置覆盖,重点检查是否写在了正确的层级(http 块内),且没有被子配置意外开启。
四、配合关闭 PHP 和系统级泄露更彻底
单关 Nginx 版本号只是第一步。真实环境中常有多层服务,建议同步处理:
- PHP:编辑
php.ini,设expose_php = Off,避免响应头出现X-Powered-By: PHP/8.2.0 - Linux 登录横幅:清空
/etc/issue和/etc/issue.net,防止 SSH 登录前泄露系统版本 - 宝塔用户:在面板【网站】→【设置】→【配置文件】中添加
server_tokens off;,再点【重载配置】
不复杂但容易忽略。


















