直接在 Apache 主配置文件里加两行关键设置就能隐藏版本号,不需要改源码或重装软件:1. 设置 ServerTokens Prod 精简响应头仅显示“Apache”,2. 设置 ServerSignature Off 关闭错误页底部服务器标识,并可选通过 mod_headers 模块彻底移除 Server 头及其他敏感头。

直接在 Apache 主配置文件里加两行关键设置就能隐藏版本号,不需要改源码或重装软件。
修改 ServerTokens 控制响应头
Apache 默认在 HTTP 响应头中返回完整信息,比如 Server: Apache/2.4.52 (Ubuntu) OpenSSL/1.1.1f,这会暴露版本、系统和模块。要精简它:
- 打开配置文件:/etc/apache2/apache2.conf(Debian/Ubuntu)或 /etc/httpd/conf/httpd.conf(RHEL/CentOS)
- 查找
ServerTokens行,改为:
ServerTokens Prod - 如果找不到这一行,直接添加在文件末尾即可
- 效果:响应头只保留 Server: Apache,不带任何附加信息
关闭 ServerSignature 隐藏错误页标识
当访问 404、500 或目录列表页时,Apache 会在页面底部自动添加一行服务器信息,例如:
Apache/2.4.52 (Ubuntu) Server at example.com Port 80。必须关掉:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 在同一配置文件中查找
ServerSignature行,改为:
ServerSignature Off - 找不到就手动添加
- 这项影响所有 Apache 自动生成的页面,包括错误页、mod_info、代理出错提示等
可选:彻底移除 Server 头和其他敏感头
仅设 ServerTokens Prod 还会在响应头留一个 Server: Apache。如需完全不留痕迹:
- 确认
mod_headers已启用:
Debian/Ubuntu 执行a2enmod headers;RHEL/CentOS 检查LoadModule headers_module是否已加载 - 在配置文件中添加:
<IfModule mod_headers.c>
Header always unset Server
</IfModule> - 顺手清理其他泄露信息的头:
Header always unset X-Powered-By
Header always unset X-Generator
验证与重启
改完保存后必须重启服务才生效:
- Ubuntu/Debian:
sudo systemctl restart apache2 - RHEL/CentOS:
sudo systemctl restart httpd - 验证命令:
curl -I https://your-domain.com,检查Server字段是否只剩 Apache 或已消失 - 再手动访问一个不存在的路径(如
/nonexistent),确认页面底部没有服务器信息行

















