我正在将Apache Httpd 2.4
用作Web服务器,但无法仅允许从特定主机访问Web服务器上的URL路径“ / x”。
httpd.conf:
<Location "/x">
Require host myhost.com
</Location>
基本上,它会忽略“ Require host myhost.com”,并限制来自所有主机的访问。
authz_host
,authz_core
模块已启用。
我想念什么吗?
谢谢
答案 0 :(得分:1)
要使Require host
工作,必须确保对域的反向DNS查找正常工作。这是通过DNS中的PTR
(指针)记录来完成的。您可以使用dig
命令检查它,如下所示:
$ dig +short www.google.de
172.217.22.67
$ dig +noall +answer -x 172.217.22.67
67.22.217.172.in-addr.arpa. 85372 IN PTR fra15s17-in-f3.1e100.net.
67.22.217.172.in-addr.arpa. 85372 IN PTR fra15s17-in-f67.1e100.net.
请注意,PTR记录的IP是反向的:172.217.22.67 <=> 67.22.217.172
因此www.google.com具有正确的反向DNS条目。
如果您的域中没有设置反向DNS指针,则您将在apache错误日志中找到类似这样的条目(除非您将其配置为位于其他位置,否则应为/var/log/apache2/error.log
):
[Wed Dec 05 16:18:23.854771 2018] [authz_core:error] [pid 4711] [client W.X.Y.Z:54050] AH01630: client denied by server configuration: /var/www/example.com/x
作为解决方法,您可以只使用Require ip
:
<Location "/x">
Require ip W.X.Y.Z
</Location>
根据error.log中的条目,其中W.X.Y.Z是您的IP。
希望这会有所帮助,如果可以的话,我很高兴您接受答案。