TraceEnable off 必须在服务器级或虚拟主机级配置中使用,不能置于<Directory>块内;推荐在<VirtualHost>中设置以彻底禁用TRACE,或用mod_rewrite在<Directory>中拦截并返回403。

TraceEnable off 不能放在 <Directory> 块中使用。
这是关键前提:Apache 官方明确限定 TraceEnable 指令仅支持 服务器级(server config)或虚拟主机级(virtual host)上下文,它不被 <Directory>、<Location> 或 .htaccess 文件识别。试图在 <Directory> 中写 TraceEnable off 会导致 Apache 启动失败或配置被忽略,起不到任何防护作用。
要安全禁用 TRACE(及 TRACK)方法,需根据你的权限和环境选择合适方式:
✅ 推荐做法:在 <VirtualHost> 块内启用 TraceEnable off
适用于有虚拟主机配置文件编辑权限的用户(如 VPS、独立服务器管理员):
- 编辑对应站点的虚拟主机配置(例如
/etc/httpd/conf.d/example.com.conf) - 在
<VirtualHost *:80>或<VirtualHost *:443>内任意位置添加:TraceEnable off
- 保存后重启 Apache:
systemctl restart httpd
⚠️ 注意:该设置对整个虚拟主机生效,且从协议层彻底关闭 TRACE 支持,比规则拦截更底层、更高效。
✅ 兼容做法:用 mod_rewrite 在 <Directory> 中拦截 TRACE/TRACK
如果你只能修改目录级配置(例如共享虚拟主机限制下无法改 <VirtualHost>),可借助 mod_rewrite 实现逻辑拦截:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 确保
mod_rewrite已启用(检查httpd.conf中LoadModule rewrite_module modules/mod_rewrite.so未被注释) - 在
<Directory "/var/www/html">块内添加:RewriteEngine On RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK) RewriteRule .* - [F] -
[F]返回 HTTP 403 Forbidden,语义清晰,不暴露服务细节
? 提示:此方式也支持一并禁用
OPTIONS(防信息泄露)或CONNECT(防隧道滥用),只需扩展正则:RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK|OPTIONS|CONNECT)
❌ 不可行做法:在 <Directory> 中写 TraceEnable off
- Apache 会报错或静默忽略
- 安全扫描仍会标记漏洞未修复
- 无法通过
apachectl configtest验证通过(部分版本直接拒绝加载)
验证是否生效
无论用哪种方式,都建议手动验证:
-
使用 telnet 测试:
telnet your-domain.com 80 TRACE / HTTP/1.1 Host: your-domain.com
正常应返回
403 Forbidden(rewrite 方式)或连接被重置/无响应(TraceEnable off成功时)。 -
或用 curl:
curl -X TRACE http://your-domain.com/ -I
不复杂但容易忽略。

















