server_tokens是Nginx控制是否在响应头和错误页暴露版本号的指令,默认开启易被攻击者利用;关闭它需在nginx.conf的http块中设为off,并重载配置,但仅降低被自动化扫描概率,不提升本质安全。

server_tokens 是什么,为什么关掉它
server_tokens 是 Nginx 的一个内置指令,控制是否在 HTTP 响应头(Server 字段)和错误页面中暴露 Nginx 版本号。默认开启,比如返回 Server: nginx/1.22.1。攻击者常靠这个快速识别服务版本,匹配已知漏洞进行扫描或利用。关掉它不提升安全性本质,但能减少被自动化工具盯上的概率。
宝塔面板里怎么改 server_tokens
宝塔没有单独开关,必须手动编辑 Nginx 主配置文件。路径是:/www/server/nginx/conf/nginx.conf。打开后,在 http 块内(不是 server 块)添加或修改这一行:
server_tokens off;
注意:如果该行已存在但值为 on 或带注释,要取消注释并改成 off;如果写在某个 server 块里,会被忽略——Nginx 只认 http 级别的设置。
改完不生效?检查这三件事
- 没重载 Nginx:宝塔界面点「重载配置」或终端执行
nginx -s reload,不能只点「保存」
- CDN 或反向代理挡住了响应头:用
curl -I 域名 直连服务器 IP 测试,避免 CDN 缓存旧头
- PHP-FPM 错误页仍显示版本:如果用的是宝塔默认的 PHP 错误页模板,
server_tokens 不影响它;需额外关闭 PHP 的 expose_php = Off(在 /www/server/php/{版本}/etc/php.ini 中)
隐藏版本号后还有哪些泄露点
nginx -s reload,不能只点「保存」curl -I 域名 直连服务器 IP 测试,避免 CDN 缓存旧头server_tokens 不影响它;需额外关闭 PHP 的 expose_php = Off(在 /www/server/php/{版本}/etc/php.ini 中)光关 server_tokens 不够。真实扫描器还会看:
- Nginx 默认欢迎页内容(
/www/server/nginx/html/index.html,建议替换或删掉) - HTTP 响应头里的
X-Powered-By(来自 PHP 或后端框架,需在 PHP 配置或应用层移除) - SSL 证书信息、DNS 记录、目录遍历返回的 Server 头(如 Apache 混合部署时)
别只盯着一个配置项,版本号只是指纹中最浅的一层。











