如何只允许从 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_host
、authz_core
模块已启用。
我错过了什么吗?
谢谢
【问题讨论】:
这应该可以,我刚刚测试过。您是否可能有其他配置(例如<Directory /var/www/x/>
覆盖 Location 指令?
@digijay 我还在 要使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 VirtualHost Ubuntu 只允许访问本地网络