仅关闭 server_tokens off 不足以隐藏 nginx 版本,还需检查并清理自定义错误页中的硬编码版本信息,统一使用静态 error_page 配置并交叉验证响应头与页面源码。

只关 server_tokens off 还不够——错误页面(如 404、502、503)里仍可能硬编码着 Nginx 版本文字,比如默认页底部的 nginx/1.24.0。这会让指纹收敛失败,攻击者一眼就能确认你用的是哪个版本。
确保 error_page 不泄露版本信息
默认错误页由 Nginx 内置生成,只要 server_tokens off 就会自动去除其中的版本号。但如果你用了自定义 error_page(例如指向 /usr/share/nginx/html/50x.html),就必须人工检查 HTML 源码:
- 打开你配置的错误页文件(如
50x.html或404.html) - 搜索关键词:
nginx、version、1.(如1.24)、Powered by - 删掉所有带版本标识的行,例如:
<p>Powered by nginx/1.24.0</p><div class="aritcle_card flexRow artxards"> <div class="artcardd flexRow"> <a class="aritcle_card_img" rel="nofollow" href="/xiazai/skill3427" title="Nginx Config Linter"><img src="https://img.php.cn/upload/skill/000/000/081/178955659937208.jpg" alt="Nginx Config Linter" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a> <div class="aritcle_card_info flexColumn"> <a rel="nofollow" href="/xiazai/skill3427" title="Nginx Config Linter" class="overflowclass">Nginx Config Linter</a> <p class="overflowclass">对 Nginx 配置文件进行语法检查、验证和安全、性能审计。</p> </div> <a rel="nofollow" href="/xiazai/skill3427" title="Nginx Config Linter" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span> </a> </div> </div>或页脚注释 - 避免在模板中动态插入
$server_version等变量(Nginx 不原生支持该变量,但有人误用后端语言拼接)
统一用静态 error_page + server_tokens off 组合生效
推荐做法是显式声明错误页路径,并确保它们完全静态、无服务端逻辑:
- 在
http或server块中添加:server_tokens off; error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /404.html { internal; root /usr/share/nginx/html; } location = /50x.html { internal; root /usr/share/nginx/html; } -
internal防止用户直接访问这些页面;root明确指定静态资源位置,避免路径解析出错 - 确认这些 HTML 文件本身不包含任何版本字符串,且不通过 JS/AJAX 动态加载含版本信息的内容
验证是否真正收敛了指纹
改完别急着上线,三步交叉验证:
- 用
curl -I https://yoursite.com/nonexistent-path查看响应头,确认Server: nginx(无版本) - 用浏览器访问
/nonexistent-path,右键“查看页面源码”,全文搜索nginx/、1.、202[0-9]等典型版本痕迹 - 用
nmap -p 80 --script http-server-header yoursite.com或在线工具(如 securityheaders.com)复测,排除 CDN 缓存干扰
做到这三点,Nginx 层面的版本指纹就基本收干净了。后续还需注意 PHP、Node.js 等后端组件是否自行输出 Server 头——那已不属于 Nginx 配置范畴。










