在Nginx主配置的http块中添加server_tokens off;可全局隐藏版本号,需执行nginx -t验证后reload生效,curl -I可确认Server头仅显示“nginx”且错误页无版本信息。

直接在 Nginx 主配置的 http 块中添加 server_tokens off;,就能关闭版本号输出——这是最有效、最通用的做法,无需重编译,也不依赖系统环境。
在哪改?优先写在 http 块里
打开主配置文件(通常是 /etc/nginx/nginx.conf 或 conf/nginx.conf),找到 http { ... } 区域,在其中任意位置插入:
server_tokens off;
这样设置后,所有 server 块和 location 块都会继承该行为。如果只想对某个站点隐藏,也可以单独加在对应 server{} 或 location{} 内,但全局统一更稳妥。
改完必须验证和重启
语法错误会导致服务启动失败,所以不能跳过检查步骤:
- 运行
nginx -t(Linux)或nginx.exe -t(Windows)确认配置无误 - 执行
nginx -s reload平滑重载(推荐) - Windows 下也可通过服务管理器重启 “Nginx” 服务
注意:不要用 stop + start,可能造成连接中断;reload 能保持已有连接不中断。
怎么确认真的生效了?
用 curl 测试响应头即可:
curl -I https://your-domain.com- 观察
Server:字段,应只显示nginx或完全为空(取决于是否被 CDN/反向代理覆盖) - 同时访问一个不存在的路径(如
/nonexistent),检查 404 页面底部是否还带版本号——关掉后这里也不会再出现
如果仍看到版本号,常见原因包括:CDN 缓存了旧响应头、后端应用(如 PHP)自己输出了 Server 头、或配置没生效(比如写在了错误的作用域里)。
它不能解决的所有事
server_tokens off 只管 Nginx 自身暴露的信息:
- 不隐藏 PHP、Tomcat、Node.js 等后端组件的版本
- 不阻止指纹识别工具通过响应特征推测 Nginx 大致版本(比如特定 header 顺序、错误页结构)
- Cloudflare、阿里云全站加速等 CDN 默认会覆盖 Server 头,需在控制台额外关闭“源站信息透出”选项
真正安全的思路是:关掉 server_tokens 是第一步,再配合及时升级、最小化模块、限制敏感路径,才构成基础防线。











