我在同一个apache服务器上有几个命名的虚拟主机,对于我需要确保只允许一组特定IP地址访问的虚拟主机之一.
请建议最好的方法来做到这一点.我看过mod_authz_hosts模块,但看起来我不能在虚拟主机内部进行.
Nei*_*ski 45
该mod_authz_host指令必须是内部<Location>或<Directory>块,但我已经使用中的前者<VirtualHost>,像这样的Apache 2.2:
<VirtualHost *:8080>
<Location />
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Location>
...
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
参考:https://askubuntu.com/questions/262981/how-to-install-mod-authz-host-in-apache
Jef*_*ett 26
对于Apache 2.4,您将使用Require IP指令.所以只允许来自192.168.0.0/24网络的机器(范围192.168.0.0 - 192.168.0.255)
<VirtualHost *:80>
<Location />
Require ip 192.168.0.0/24
</Location>
...
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
如果您只是希望localhost机器具有访问权限,那么就有一个特殊的Require local指令.
如果满足以下任一条件,则本地提供程序允许访问服务器:
- 客户端地址匹配127.0.0.0/8
- 客户端地址是:: 1
- 连接的客户端和服务器地址都是相同的
这允许以方便的方式匹配源自本地主机的连接:
<VirtualHost *:80>
<Location />
Require local
</Location>
...
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
小智 9
在 Apache 2.4 中,授权配置语法已更改,不应再使用Order,Deny或指令。Allow
执行此操作的新方法是:
<VirtualHost *:8080>
<Location />
Require ip 192.168.1.0
</Location>
...
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
使用新语法的更多示例可以在 Apache 文档中找到:Upgrading to 2.4 from 2.2
小智 6
如果您在虚拟主机中使用apache 2.2,则应添加以下指令(mod_authz_host):
Order deny,allow
Deny from all
Allow from 10.0.0.1
Run Code Online (Sandbox Code Playgroud)
您甚至可以指定子网
Allow from 10.0.0
Run Code Online (Sandbox Code Playgroud)
Apache 2.4看起来与配置略有不同.也许你更好地指定你使用的是哪个版本的apache.