直接在 nginx 主配置的 http 块中添加 server_tokens off;,重载后响应头和默认错误页中的版本号即被隐藏,仅显示 server: nginx;该指令必须置于 http 块内才全局生效,写在 server 或 location 块中无效,且需执行 nginx -t 验证并 nginx -s reload 重载,再通过 curl 和 404 页面双重验证效果。

直接在 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; - 删掉其他地方(如站点配置文件、server 块内)重复写的
server_tokens行,避免冲突 - 注意分号不能漏,也不能写成
server_tokens = off或加引号
改完要重载,不是重启
保存配置后必须执行重载操作,才能让新设置即时生效,同时保持现有连接不断开。
- 先检查语法是否正确:
sudo nginx -t - 再重载配置:
sudo nginx -s reload或sudo systemctl reload nginx - 宝塔用户可在面板右上角点击「重载配置」,不要点「重启」
验证是否真的隐藏成功
重载后需从两个地方确认效果,缺一不可:
- 用命令查响应头:
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: PHP/8.2.0 - 反向代理场景:若上游服务返回了
Server头,需在对应location块中、proxy_pass之后添加proxy_hide_header Server; - CDN 用户:比如 Cloudflare,还需在其后台关闭或覆盖
Server头,否则会覆盖 Nginx 的设置











