直接在nginx主配置的http块中添加server_tokens off;可全局隐藏响应头及错误页中的版本号,仅显示server: nginx;必须写在http{}内同级位置,重载后需用curl验证响应头和404页面源码是否均无版本信息。

直接在 Nginx 主配置的 http 块中添加 server_tokens off;,就能让所有响应头和默认错误页只显示 Server: nginx,不再暴露如 nginx/1.24.0 这类具体版本号,有效降低被扫描工具识别后发起已知漏洞攻击的风险。
必须写在 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或加引号
改完要验证再重载,不能跳步
语法错误会导致配置加载失败,必须先校验再应用。
- 执行
nginx -t检查配置是否合法 - 校验通过后重载:命令行用
nginx -s reload,宝塔面板点「重载配置」(不是「重启」或「启动」) - 重载后连接不断开,服务持续可用
两个地方都要检查才算隐藏成功
只看响应头不够,错误页也可能泄露版本信息。
- 用
curl -I https://your-domain.com查响应头,应为Server: nginx,不能出现nginx/1.24.0 - 访问一个不存在的路径(如
/nonexistent),查看返回的 404 页面源码,确认底部没有nginx/1.24.0或操作系统字样 - 如果用了 CDN(如 Cloudflare),还要去 CDN 后台关掉它覆盖的
Server头,否则 Nginx 的设置会被覆盖
它不解决全部版本暴露问题,需配合其他处理
server_tokens off 只管 Nginx 自身输出的内容,以下情况需额外配置:
- 后端服务(PHP-FPM、Tomcat、Node.js)可能在响应头中返回自己的版本,需各自配置隐藏,或在 Nginx 的
location块中加proxy_hide_header Server; - 若用了自定义错误页(如
error_page 404 /404.html),要检查 HTML 文件里是否硬编码了nginx/xxx—— 那样仍会泄露 - 安全扫描工具可能通过指纹推测版本,所以保持 Nginx 及系统组件及时更新仍是关键











