在宝塔中关闭 server_tokens需进入网站配置文件,在server块的location /上方添加server_tokens off;并重载配置;apache需同时设置servertokens prod和serversignature off;宝塔面板版本号需手动修改login.html和webserver.py文件。

nginx 配置里怎么关掉 server_tokens
宝塔默认开启 server_tokens,导致 HTTP 响应头暴露 nginx 和系统版本(比如 Server: nginx/1.22.1),这是基础信息泄露风险。关掉它不难,但得在对的地方改,否则重启后失效。
- 别去改网站配置文件里的「伪静态」或「配置修改」框——那里改了会被宝塔自动覆盖
- 正确路径是:进入宝塔 → 网站 → 设置 → 配置文件 → 找到
server块,在location /上方加一行:server_tokens off; - 如果用了多站点,每个站点的配置都要单独加;主配置(
/www/server/nginx/conf/nginx.conf)里加也行,但宝塔升级可能重写该文件,优先选站点级配置 - 改完必须点「保存」再点「重载配置」,只重启 nginx 不生效
Apache 下如何隐藏 ServerSignature 和 ServerTokens
用 Apache 的用户容易忽略这点:即使关了 ServerTokens,ServerSignature 仍会让错误页底部显示 Apache 版本。两者都得关,缺一不可。
- 在站点配置中找
<virtualhost></virtualhost>块,添加两行:ServerTokens Prod和ServerSignature Off -
ServerTokens Prod是关键——不能写None(Apache 2.4+ 已废弃),写Prod才只输出Apache,不带版本号 - 宝塔里改 Apache 配置后,要点击「重载 Apache」,不是「重启」;重启会中断连接,重载平滑更新
- 改完用
curl -I https://yoursite.com检查响应头,确认Server字段只剩Apache或已完全消失(取决于模块是否启用)
宝塔后台本身泄露的版本号怎么处理
很多人只顾 Web 服务,忘了宝塔面板自己也会在登录页、HTTP 响应头甚至 JS 文件里埋版本号(比如 X-Powered-By:宝塔-8.0.3)。这部分无法通过常规配置关闭,得手动干预。
- 登录页版本显示在
/www/server/panel/BTPanel/templates/default/login.html,搜索panelVersion或「v{{version}}」删掉对应 DOM 节点 - HTTP 头里的
X-Powered-By来自/www/server/panel/class/webserver.py,找到set_header("X-Powered-By", "宝塔-"+self.get_panel_version())这行,注释掉 - 改 Python 文件前务必备份,且每次宝塔升级后这些改动都会被覆盖,得重新处理
- 不建议删整个
webserver.py或改核心逻辑,容易导致面板功能异常,比如网站列表加载失败
隐藏版本后还要注意什么
关掉版本号只是最小动作,攻击者仍可通过其他方式探测服务指纹,比如响应头顺序、默认图标路径、错误页 HTML 结构。别以为关了 server_tokens 就万事大吉。
- 检查是否还有
X-AspNet-Version、X-Drupal-Cache这类框架特有头,它们一样暴露技术栈 - PHP 的
expose_php = On会在响应头加X-Powered-By: PHP/8.1.2,需在/www/server/php/81/etc/php.ini里设为Off - 宝塔自带防火墙默认不开「防 CC 攻击」和「请求频率限制」,单纯隐藏版本挡不住真实扫描器,得配合规则联动










