最直接有效的方式是在 nginx 主配置文件的 http 块内添加 server_tokens off;,重载后可同时隐藏响应头(server: nginx)和错误页中的版本号;必须置于 http 块同级位置,删除重复配置,执行 nginx -t && nginx -s reload 验证,并同步处理 php、cdn、后端服务等泄露点。

在 Nginx 基础配置中隐藏服务器版本号,最直接有效的方式是启用 server_tokens off 指令。它能同时消除响应头中的版本标识(如 Server: nginx/1.20.1)和错误页面底部的版本文字,无需重新编译,适用于所有常规部署场景。
必须写在 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 off;,避免冲突 - 确保分号不遗漏,也不能写成
server_tokens = off或加引号
重载而非重启,验证是否真正生效
修改后必须执行语法检查和重载操作,否则配置不会生效,且可能中断服务。
- 运行
sudo nginx -t,确认输出为success再继续 - 执行
sudo nginx -s reload或sudo systemctl reload nginx - 宝塔用户可直接点击面板右上角「重载配置」按钮
- 切勿使用
restart,它会断开正在处理的请求
验证是否隐藏成功
仅看配置是否写对不够,必须通过实际响应验证效果。
- 用
curl -I https://your-domain.com查看响应头,Server:字段应只显示nginx或完全不出现 - 访问一个不存在的路径(如
/nonexistent),查看返回的 404 页面源码,确认无nginx/字样 - 若仍暴露版本,重点检查:是否写在了
http块内、是否被 CDN 缓存覆盖、或被反向代理上游服务透出
别忘了同步处理其他泄露点
server_tokens off 只控制 Nginx 自身,真实环境中还有多个常见信息泄露源:
- PHP:编辑
php.ini,设expose_php = Off,防止X-Powered-By头泄露 PHP 版本 - CDN(如 Cloudflare、阿里云全站加速):需在控制台关闭“源站信息透出”或自定义
Server头 - 反向代理后端(如 Apache、Tomcat):在对应
location块中添加proxy_hide_header server; - Linux 登录横幅:清空
/etc/issue和/etc/motd,防止 SSH 登录前泄露系统信息











