如何只允许来自Apache Httpd 2.4上特定主机的访问?

时间:2018-12-05 09:45:40

标签: apache httpd.conf apache2.4

我正在将Apache Httpd 2.4用作Web服务器,但无法仅允许从特定主机访问Web服务器上的URL路径“ / x”。

httpd.conf:

<Location "/x">
    Require host myhost.com
</Location> 

基本上,它会忽略“ Require host myhost.com”,并限制来自所有主机的访问。

authz_hostauthz_core模块已启用。

我想念什么吗?

谢谢

1 个答案:

答案 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。

希望这会有所帮助,如果可以的话,我很高兴您接受答案。