关闭 HostnameLookups 可显著降低请求延迟,因避免了每次请求的同步 DNS 反查;应设为 Off 并配合 logresolve 等离线解析日志,同时将域名访问控制改为 IP 规则。

关闭 Apache 的 DNS 反向查询能直接减少每个请求的等待时间,尤其在高并发或 DNS 延迟较高的环境中效果明显。默认开启时,Apache 会对每个客户端 IP 执行 gethostbyaddr() 调用,查其主机名——这不仅慢,还可能因 DNS 服务器响应超时而拖慢整个请求处理流程。
关闭 HostnameLookups 配置
这是最核心的操作。只需在主配置文件(如 httpd.conf 或 apache2.conf)中确保以下设置生效:
-
HostnameLookups Off(推荐明确写为Off,而非Double或On) - 该指令全局生效,无需放在虚拟主机内;若已存在,检查是否被后续配置覆盖
- 修改后需重载服务:
sudo systemctl reload apache2(Debian/Ubuntu)或sudo apachectl graceful(RHEL/CentOS)
替代方案:日志中需要主机名怎么办
如果业务要求日志里显示域名(如用于分析或审计),不建议在请求处理时实时解析。更高效的做法是:
免费 DNS 与邮件安全分析(IntoDNS.ai):包括 DNSSEC、SPF、DKIM、DMARC、MTA-STS、BIMI、SMTP STARTTLS、FCrDNS、黑名单、发件人要求及报告。
- 保持
HostnameLookups Off,日志中只记录原始 IP 地址 - 使用离线工具(如
logresolve,Apache 自带)对访问日志做批量反向解析 - 或用现代日志系统(如 Logstash、Fluentd)在摄入阶段异步查 DNS,不影响 Apache 主线程
验证是否生效
可通过以下方式确认优化已起作用:
- 查看当前配置:运行
apache2ctl -t -D DUMP_RUN_CFG | grep HostnameLookups(Linux) - 压测对比:用
ab或wrk对比开启/关闭前后的平均延迟与错误率,尤其关注 DNS 超时类错误是否消失 - 抓包验证:用
tcpdump port 53观察请求期间是否仍有大量 DNS 查询发出
关联注意事项
这项优化常与其他配置协同生效:
- 若使用了
Allow from example.com类基于域名的访问控制,必须改用 IP 段(如Allow from 192.168.0.0/16)或迁移到mod_authz_host的现代语法 - 搭配
mod_status使用时,HostnameLookups Off后状态页中的“Client”列将只显示 IP,更准确且无延迟 - 和
KeepAlive On组合时,可避免长连接期间反复触发 DNS 查询

















