当我的托管服务提供商从 Apache 2.2 升级到 Apache 2.4 后,有些事情开始困扰我。
我的 .htaccess 中有这些 Apache 2.2 规则
order allow,deny
deny from domain.tld
deny from 1.2.3.4
allow from all
这些规则在 Apache 2.4 中达到了 500 条,因此我研究了 Apache 2.4 手册和网页,最终得出了
<RequireAll>
Require all granted
Require not host domain.tld
Require not ip 1.2.3.4
</RequireAll>
我用自己的 IP 地址和域名测试了这一点,这是可行的,Apache 给出了 403。然而,Apache 错误日志出现了
<Thu Dec 06 20:16:51.641853 2018> <authz_host:error> <pid 1347506:tid 140612011235072> <client 86.90.6.41:42035> AH01753: access check of 'domain.tld' to /index.html failed, reason: unable to get the remote host name
那里说了什么?另外,由于我的 htaccess 中多了一个“不需要主机”规则,因此它会对我的 htaccess 中的每个条目重复此“AH017053”错误。它对访问者请求的每个文件都重复此错误,因此在 index.html 之后,它会对“index.css”等重复此错误。
我希望这个错误消失,但我不知道该怎么做。另外,我想知道,如果 Apache 在测试情况下仍然阻止我自己的 IP 地址和域名,这个错误到底想表达什么?
我读了https://httpd.apache.org/docs/2.4/mod/mod_authz_host.html而且我不确定,当 Apache 抱怨“AH017053”时,我是否应该能够在某处查找它?
答案1
我在这里找到了答案https://httpd.apache.org/docs/2.4/mod/mod_authz_host.html
代替
Require not host domain.tld
它将停止尝试双重反向查找
Require not forward-dns domain.tld
原因解释如下https://httpd.apache.org/docs/2.4/mod/core.html#hostnamelookups