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

Posted

技术标签:

【中文标题】如何只允许从 Apache Httpd 2.4 上的特定主机访问?【英文标题】:How to allow access only from a specific host on Apache Httpd 2.4? 【发布时间】:2019-05-06 20:20:01 【问题描述】:

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

httpd.conf:

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

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

authz_hostauthz_core 模块已启用。

我错过了什么吗?

谢谢

【问题讨论】:

这应该可以,我刚刚测试过。您是否可能有其他配置(例如 &lt;Directory /var/www/x/&gt; 覆盖 Location 指令? @digijay 我还在 上方配置了 【参考方案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。

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

【讨论】:

您好 Netanel,您能否再检查一下您是否有任何其他指令影响Location /x?这可以是别名或目录指令或类似的东西。另外,你能检查一下Require ip 是否有效吗?

以上是关于如何只允许从 Apache Httpd 2.4 上的特定主机访问?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以只允许 Apache HTTPd 静态资源访问在 Tomcat 中经过身份验证的客户端?

即使在应用程序部署之后,如何永久编辑 httpd.conf 以使 apache 2.4 中的更改发生?

Apache 2.4 无法在 Windows 10 上安装

Apache 2.4 VirtualHost Ubuntu 只允许访问本地网络

apache编译安装 httpd 2.2 httpd 2.4

centos8设置httpd只允许https访问