直接在 nginx.conf 的 http 块中添加 server_tokens off; 可同时隐藏响应头和错误页中的 nginx 版本号,因该指令统一控制 nginx 自动生成的错误页(如 404、500)底部标识(如“nginx/1.26.3”)及 server 响应头版本信息,且必须置于 http 块顶层同级位置才生效。

直接在 nginx.conf 的 http 块中添加 server_tokens off;,就能同时隐藏 HTTP 响应头和所有错误页面(如 404、500)里的 Nginx 版本号。
为什么错误页会显示版本号
Nginx 默认会在自动生成的错误页面底部写入类似 <center><h1>404 Not Found</h1></center>
<hr>
<center>nginx/1.26.3</center> 的标识。这不是某个独立开关控制的,而是 server_tokens 指令统一管理的行为之一。
正确配置位置与写法
必须把指令放在 http { } 块顶层,与其他基础配置(如 include mime.types;)同级:
- ✅ 正确示例:
http {
include mime.types;
default_type application/octet-stream;
server_tokens off;
# 其他 http 级配置
} - ❌ 错误写法:写在
server或location块里无效;写成server_tokens = off或漏掉分号会报错;仅注释掉该行不生效 - ⚠️ 注意检查子配置:如果用了
include sites-enabled/*.conf,要确认这些站点文件里没有server_tokens on;,否则会覆盖主配置
验证是否真正生效
改完配置不能只看文件,必须实测:
- 用
curl -I https://your-domain.com查看响应头,Server字段应只显示nginx或完全不出现 - 访问一个不存在的路径(如
/nonexistent),右键查看网页源码,确认页脚没有nginx/字样 - 执行
nginx -t确认语法无误,再用systemctl reload nginx(或nginx -s reload)重载,不要用 restart
进阶补充(按需选做)
如果对指纹隐蔽要求更高,可配合以下操作:
- 替换默认错误页:用自定义 HTML 文件(不含任何服务标识)配合
error_page 404 /custom_404.html; - 修改 Server 头内容:需编译安装
headers-more-nginx-module,再加more_set_headers 'Server: WebServer'; - 源码级定制:修改
src/core/nginx.h中的NGINX_VER和NGINX_VERSION宏,适合长期定制化部署,但升级成本高











