必须全局配置servertokens prod和serversignature off,并启用mod_headers模块添加header unset server、设expose_php=off,同时在cdn/代理层过滤,才能彻底隐藏apache版本信息。

要禁用 Apache 的服务器签名,必须先启用 mod_headers 模块,再配合 ServerSignature Off 和 ServerTokens Prod 一起使用。单独启用模块不能隐藏签名,关键在于模块启用后才能进一步控制响应头(比如彻底移除 Server 字段)。
确认并启用 mod_headers 模块
该模块是配置安全响应头的基础,多数 Apache 2.4+ 安装已默认启用,但需验证并确保加载:
- Debian/Ubuntu 系统运行:sudo a2enmod headers && sudo systemctl restart apache2
- RHEL/CentOS/Fedora 系统检查
/etc/httpd/conf.modules.d/00-base.conf是否有未注释的LoadModule headers_module modules/mod_headers.so;若无,取消注释后执行 sudo systemctl restart httpd - 验证是否生效:运行
apache2ctl -M | grep headers(或httpd -M | grep headers),输出含headers_module (shared)即表示已启用
关闭 Apache 默认签名行为
仅启用 mod_headers 不够,还需设置两个核心指令来抑制版本信息输出:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 在主配置文件(如
/etc/apache2/apache2.conf或/etc/httpd/conf/httpd.conf)中添加两行: -
ServerSignature Off—— 阻止错误页面(如 404、500)底部显示 Apache 版本和操作系统 -
ServerTokens Prod—— 将 HTTP 响应头中的Server字段压缩为仅Apache,不带版本号或系统标识 - 保存后重启服务:sudo systemctl restart apache2(或 httpd)
用 mod_headers 彻底隐藏 Server 头
上述设置仍保留 Server: Apache 响应头。如需完全移除,必须依赖 mod_headers:
- 在配置文件中添加(需置于
<ifmodule mod_headers.c></ifmodule>块内): Header always unset Server- 该指令对所有响应状态码(200/404/500)均生效,确保无遗漏
- 注意:某些旧版 Apache 或严格限制环境可能不允许完全删除
Server头,此时可退而采用Header always set Server "WebServer"进行伪装
同步隐藏 PHP 版本信息
Apache 签名只是部分,PHP 也会通过 X-Powered-By 泄露版本:
- 编辑
php.ini(路径如/etc/php/*/apache2/php.ini或/etc/php.ini) - 找到
expose_php = On,改为expose_php = Off - 重启 Apache 使 PHP 配置生效
- 可选增强:在
<ifmodule mod_headers.c></ifmodule>中追加Header always unset X-Powered-By,双重保障










