server_tokens off;需置于http块内才能全局生效,可隐藏Nginx版本号;配置后须nginx -t验证并reload生效,且需检查响应头与404页确认隐藏效果,并注意CDN、后端服务及反向代理的额外处理。

直接在 Nginx 主配置的 http 块内 添加 server_tokens off;,重载后响应头就只显示 Server: nginx,不再暴露具体版本号,能有效降低被扫描工具识别并发起已知漏洞攻击的风险。
必须写在 http 块里才全局生效
这个指令只在 http { } 作用域下起作用。写在 server 或 location 块里无效,也不会覆盖全局行为——Nginx 不支持按站点单独关闭版本号显示。
- 打开主配置文件:
/www/server/nginx/conf/nginx.conf(宝塔)或/etc/nginx/nginx.conf(通用) - 找到
http {开头的位置,在它后面第一行附近添加:server_tokens off; - 删掉其他地方(比如站点配置、server 块里)重复写的
server_tokens行,避免干扰 - 分号不能漏,也不能写成
server_tokens = off或加引号
改完要重载,不是重启
语法正确才能生效。操作顺序不能错:
- 先检查配置是否合法:
nginx -t - 再重载配置:
nginx -s reload或在宝塔面板点「重载配置」(不是「重启」或「启动」) - 重载后立即验证,避免配置被覆盖或未生效
验证是否真的隐藏成功
两个地方都要确认:
- 用
curl -I https://your-domain.com查看响应头,应为Server: nginx,而非Server: nginx/1.24.0 - 访问一个不存在的路径(如
/nonexistent),查看 404 错误页,确认页面底部不出现nginx/1.24.0或操作系统信息 - 如果用了 CDN(如 Cloudflare),还要去其后台关掉 Server 头,否则它可能覆盖 Nginx 的设置
它不能解决所有版本暴露问题
server_tokens off 只管 Nginx 自身的响应头和错误页。以下情况需额外处理:
- 后端服务(如 PHP-FPM、Tomcat、Node.js)仍可能在响应头中返回自己的版本,需各自配置隐藏
- 反向代理场景下,若上游服务返回了
Server头,需配合proxy_hide_header Server;拦截(该指令必须放在location块且proxy_pass之后) - 安全扫描工具可能通过指纹推测版本,所以保持 Nginx 及系统组件及时更新仍是关键


















