生产环境应关闭 hostnamelookups on 并设为 off;proxy 配置优先用 ip 或 /etc/hosts 绑定;2.4.53+ 可启用 cachesocache dns 缓存;配合低延迟 dns 和服务发现优化解析性能。

关闭 Apache 的 HostnameLookups
Apache 默认不解析客户端 IP 为域名,但若配置了 HostnameLookups On,每个请求都会触发一次反向 DNS 查询,严重拖慢响应。生产环境必须确保该选项为 Off(默认即如此)。检查配置:
- 在 httpd.conf 或虚拟主机配置中确认无
HostnameLookups On - 如需日志中显示域名,改用离线工具
logresolve处理访问日志,避免实时查询
Proxy 配置中避免域名直连
当使用 mod_proxy 或 mod_proxy_balancer 转发请求时,若 ProxyPass 或 BalancerMember 指向的是域名(如 http://backend.example.com),Apache 每次建连前都会执行 DNS 查询——尤其在连接复用率低或后端变更频繁时,开销显著。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 推荐做法:将后端服务地址替换为固定 IP,例如
http://10.0.1.10:8080 - 若后端 IP 可能变动,可配合本地 /etc/hosts 绑定(如
10.0.1.10 app-backend),Apache 会优先查 hosts,跳过 DNS - 不建议依赖系统 DNS 缓存,因 Apache 进程通常不共享 libc 的 DNS 缓存,每次解析独立发起
启用并合理设置 DNS 缓存(仅限 Apache 2.4.53+)
新版 Apache(2.4.53 起)通过 mod_cache_socache 和 mod_proxy 协同支持 DNS 结果缓存。需显式启用:
- 加载模块:
LoadModule cache_socache_module modules/mod_cache_socache.so - 在全局配置中添加:
CacheSocache shmcb:/var/cache/apache2/dns-cache(512000)CacheSocacheMaxSize 1024 - 对 Proxy 场景,Apache 会自动缓存 A/AAAA 记录,TTL 以 DNS 响应中的为准,但最低不低于 30 秒
- 注意:该功能不替代系统级 DNS 缓存,而是 Apache 进程内专用缓存,适合多 worker 共享查询结果
结合外部 DNS 优化策略协同生效
Apache 本身不运行 DNS 服务器,但其负载均衡效果高度依赖上游 DNS 解析质量。建议同步实施以下措施:
- 将服务器的 /etc/resolv.conf 指向低延迟、支持 EDNS Client Subnet(ECS)的 DNS,如
1.1.1.1或8.8.8.8 - 若后端服务由 Consul/Etcd 等注册中心管理,改用 Apache APISIX 或 Nginx + SRV 记录发现机制,避免轮询解析
- 对关键 upstream,配置多条 A 记录并启用 DNS 轮询(Round Robin),让操作系统层分担部分负载,降低单次解析压力









