最直接有效的方法是在nginx.conf的http块顶层添加server_tokens off;,可全局隐藏响应头及错误页中的版本号,使server字段仅显示nginx;需删除子配置中可能覆盖的server_tokens on;,执行nginx -t验证后systemctl reload nginx生效,并用curl -i确认效果。

在 nginx.conf 中隐藏服务器版本号,最直接有效的方法是启用 server_tokens off; 指令。它能阻止 Nginx 在 HTTP 响应头(Server 字段)和默认错误页面(如 404、500)中输出具体版本信息,比如从 Server: nginx/1.26.3 变为 Server: nginx,显著降低被针对性漏洞扫描利用的风险。
确认当前是否暴露版本号
执行以下命令快速验证:
-
curl -I http://localhost(或你的域名/IP),查看响应头中的Server字段 - 访问一个不存在的路径(如
/nonexistent),检查返回的 HTML 错误页源码里是否含nginx/字样
在 nginx.conf 中正确配置 server_tokens
编辑主配置文件(通常为 /etc/nginx/nginx.conf 或 /usr/local/nginx/conf/nginx.conf),将该指令放在 http 块顶层,确保全局生效:
http {
include mime.types;
default_type application/octet-stream;
<pre class="brush:php;toolbar:false;">server_tokens off; # ← 关键一行,必须在此层级
# 其他配置...}
⚠️ 注意:
– 不要写在 server 或 location 块内(低版本 Nginx 可能不识别)
– 不要仅注释掉该行,必须显式写为 off
– 若使用 include sites-enabled/*.conf,需检查子配置中是否意外写了 server_tokens on;,会覆盖主配置
应用并验证配置
修改后必须执行两步才能生效:
- 运行
nginx -t确认语法无误 - 执行
systemctl reload nginx(或nginx -s reload)平滑重载 - 再次用
curl -I测试,确认Server头只显示nginx或已简化
进阶提示:彻底隐藏或自定义 Server 标识
如果需要进一步模糊服务指纹:
- 安装
headers-more-nginx-module后,可在配置中加:more_set_headers 'Server: WebServer'; - 源码编译时修改
src/core/nginx.h中的NGINX_VER和NGINX_VERSION宏,可完全替换或清空标识(适合定制化部署,但升级维护成本高) - 注意:完全删除
Server头不推荐,部分客户端或中间设备依赖该字段做协议兼容判断











