Nginx 默认开启 server_tokens,暴露版本号存在信息泄露风险,应在 http 块中显式配置 server_tokens off 并重载生效,使响应头仅显示 Server: nginx。

安装 Nginx 后,默认会在 HTTP 响应头中暴露版本号(如 Server: nginx/1.24.0),这属于信息泄露风险,建议关闭。
确认 server_tokens 是否已关闭
默认情况下,Nginx 是开启 server_tokens 的。即使你没手动配置,它也处于启用状态。可通过以下方式验证:
- 用
curl -I http://your-domain.com查看响应头中的Server字段 - 若显示类似
Server: nginx/1.24.0,说明未关闭
在配置文件中添加 server_tokens off
该指令需放在 http、server 或 location 块中,推荐写在 http 块以全局生效:
http {
include mime.types;
default_type application/octet-stream;
<pre class="brush:php;toolbar:false;"># 隐藏版本号
server_tokens off;
...
}
注意:server_tokens off 只影响响应头中的 Server 字段,不会修改错误页面里的版本提示(如 404 页面底部)。如需彻底隐藏,还需自定义错误页或配合其他安全措施。
重载 Nginx 生效配置
修改配置后必须重载,不能仅重启:
- 检查语法:
nginx -t - 重载配置:
nginx -s reload(或systemctl reload nginx)
重载后再次用 curl -I 测试,响应头应变为 Server: nginx(仅显示软件名,无版本)。
常见误区提醒
以下操作无效或不推荐:
- 只在某个
server块里加server_tokens off,但http块里没关 → 其他虚拟主机仍可能暴露 - 误以为注释掉某行就等于关闭 → 必须显式写
server_tokens off - 试图用
more_set_headers "Server: xxx"覆盖 → 不可靠,且需额外模块,不推荐










