直接在nginx主配置文件http块中添加server_tokens off;并重载服务,可使响应头仅显示server: nginx且错误页不出现版本字样;该指令必须置于http块内才全局生效,写在server或location块无效;需删除其他位置重复配置,检查语法后执行reload验证,并同步关闭php、系统横幅及cdn等关联泄露点。

直接在 Nginx 主配置文件的 http 块里添加 server_tokens off;,重载服务后,响应头就只显示 Server: nginx,错误页也不再出现版本字样。这是最有效、最稳妥的隐藏方式。
必须写在 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 | grep Server,应只看到Server: nginx或完全不显示 - 测错误页:访问一个不存在的路径(如
/nonexistent),查看返回 HTML 源码,确认没有nginx/字样 - 如果仍暴露版本,重点检查是否写在了正确的层级(
http块内),且没被子配置意外覆盖
别忘了配合其他组件一起关
server_tokens off 只管 Nginx 自身,真实环境里还有多个信息泄露点:
- PHP:编辑
php.ini,设expose_php = Off,避免X-Powered-By头泄露 PHP 版本 - Linux 登录横幅:清空
/etc/issue和/etc/issue.net,防止 SSH 登录前泄露系统信息 - CDN(如 Cloudflare):需在其控制台关闭“源站信息透出”或自定义 Server 头,否则会覆盖 Nginx 设置
- 反向代理场景:若上游服务返回了 Server 头,需在对应
location块中加proxy_hide_header Server;











