Apache httpd 不会停止对客户端 IP 执行反向 DNS 请求

Apache httpd 不会停止对客户端 IP 执行反向 DNS 请求

显然,我的 Apache httpd 实例正在对每个传入客户端连接的 IP 地址进行反向 DNS(RDNS,给我这个 IP 地址的主机名)查找。这很糟糕。尤其是有时解析会因缺少 PTR 记录而失败 -28秒后

诊断:我添加了%D我的“组合”日志样式,并通过以下方式查看了响应时间:显然,对于所有使用其主机名记录的用户,响应时间都小于 1 秒,而对于记录其 IP 的用户,响应时间则为 20+ 秒。

这是我尝试过的:

  • 关闭server-status扩展。
  • 检查HostnameLookups Off配置中是否包含该项。
  • 检查/规则mod_access中没有给出任何主机名。AllowDeny
  • 检查反向代理服务器是否遵循相同的规则。

我错过了什么?

答案1

看来标准的 Ubuntu 8.04 Apache httpd 安装带有LogFormat以开头%h,执行客户端 IP 的 RDNS 查找。为什么??将其替换为%a(远程 IP 地址,请参阅自定义日志格式)可将此问题减少约 90%。有些仍存在...

答案2

您是否已确认HostnameLookups未在任何其他指令中设置?您是否已激活模块 mod_authz_host?

答案3

我偶然发现了同样的问题,并发现了另一个反向查找来源:应用程序本身! PHP 具有以下gethostbyaddr()功能:

http://php.net/manual/en/function.gethostbyaddr.php

答案4

我在 NGINX 反向代理服务器后面有一个 Apache 服务器。Apache 服务器会对每个请求进行反向 DNS 查找。我尝试了目前为止建议的所有方法,甚至注释掉了日志行,但 Apache(或其他程序)正在执行反向 DNS 查找(NGINX 服务器的查找)。然后我在 Apache 服务器的文件中添加了 NGINX 服务器,/etc/hosts不再进行反向查找!当所有这一切发生时,Apache 会愉快地转发(客户端的)远程 IP,而无需进行任何查找。对这个解决方法很满意,但很想知道如何完全避免一遍又一遍地查找同一个 NGINX 反向代理服务器!

相关内容