在 Nginx 的 http 块内添加 server_tokens off; 可隐藏响应头及错误页中的版本号,需验证配置后重载,并同步关闭 PHP、上游服务、系统横幅等其他泄露点。

直接在 Nginx 主配置文件的 http 块内添加 server_tokens off;,就能关闭响应头中暴露的版本号,让 Server 字段只显示 nginx,不带 /1.24.0 这类具体版本信息。
必须写在 http 块里才生效
这个指令只在 http { } 作用域下有效。写在 server 或 location 块里会被忽略,不起作用。
- 打开主配置文件:通用系统为
/etc/nginx/nginx.conf,宝塔面板为/www/server/nginx/conf/nginx.conf - 找到
http {开头的位置,在其大括号内部、与include mime.types;同级处添加一行:server_tokens off; - 删掉其他地方(如站点 conf 文件、server 块内)重复写的
server_tokens行,避免覆盖或冲突 - 注意分号不能遗漏,也不能写成
server_tokens = off或加引号
改完要验证再重载
语法错误会导致配置加载失败,必须先校验再应用。
- 执行
nginx -t检查配置是否合法,返回success才继续 - 校验通过后重载:
nginx -s reload(命令行)或点击宝塔面板右上角「重载配置」按钮 - 切勿使用
restart,它会中断正在处理的连接
两个地方都要检查才算真正隐藏
只看响应头不够,错误页也可能泄露版本信息。
- 用
curl -I https://your-domain.com | grep Server查响应头,应只输出Server: nginx或完全不显示 - 访问一个不存在路径(如
/nonexistent),查看返回的 HTML 源码,确认底部没有nginx/或操作系统字样 - 若仍暴露,重点检查是否写错层级、被子配置覆盖,或 CDN(如 Cloudflare)在回源时覆盖了
Server头
还要同步处理其他泄露点
server_tokens off 只控制 Nginx 自身输出,真实环境中还有多个版本信息出口:
- PHP:编辑
php.ini,设expose_php = Off,消除X-Powered-By头 - 反向代理:上游服务(如 Tomcat、Node.js)返回的
Server头,需在对应location块加proxy_hide_header Server; - Linux 登录横幅:清空
/etc/issue和/etc/motd,防止 SSH 前泄露系统信息 - 自定义错误页:检查
error_page引用的 HTML 文件,确认未硬编码版本或服务器信息


















