我在同一个apache服务器上有几个命名的虚拟主机,对于其中一个虚拟主机,我需要确保只允许访问一组特定的IP地址。我已经看过mod_authz_hosts模块了,但是它看起来不像是我可以在虚拟主机中做的。
dohp0rv51#
mod_authz_host指令需要在<Location>或<Directory>块中,但我在<VirtualHost>中使用了前者,就像Apache 2.2中使用的那样:
mod_authz_host
<Location>
<Directory>
<VirtualHost>
<VirtualHost *:8080> <Location> Order deny,allow Deny from all Allow from 127.0.0.1 </Location> ... </VirtualHost>
参考:https://askubuntu.com/questions/262981/how-to-install-mod-authz-host-in-apache
mmvthczy2#
对于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>
如果你只想让本地主机拥有访问权限,那么有一个特殊的Require local指令。如果满足下列任一条件,本地提供程序将允许访问服务器:
这样可以方便地匹配源自本地主机的连接:
<VirtualHost *:80> <Location /> Require local </Location> ... </VirtualHost>
b4lqfgs43#
如果您在虚拟主机内使用apache 2.2,则应添加以下指令(mod_authz_host):
Order deny,allow Deny from all Allow from 10.0.0.1
您甚至可以指定子网
Allow from 10.0.0
Apache2.4看起来和配置有点不同。也许你最好指定你使用的是哪个版本的apache。
gr8qqesn4#
在Apache 2.4中,授权配置语法已更改,不应再使用Order、Deny或Allow指令。新的方法是:
Order
Deny
Allow
<VirtualHost *:8080> <Location /> Require ip 192.168.1.0 </Location> ... </VirtualHost>
Apache文档中提供了使用新语法的更多示例:Upgrading to 2.4 from 2.2
4条答案
按热度按时间dohp0rv51#
mod_authz_host
指令需要在<Location>
或<Directory>
块中,但我在<VirtualHost>
中使用了前者,就像Apache 2.2中使用的那样:参考:https://askubuntu.com/questions/262981/how-to-install-mod-authz-host-in-apache
mmvthczy2#
对于Apache 2.4,您将使用Require IP指令。因此,仅允许来自192.168.0.0/24网络(范围192.168.0.0 -192.168.0.255)的计算机
如果你只想让本地主机拥有访问权限,那么有一个特殊的Require local指令。
如果满足下列任一条件,本地提供程序将允许访问服务器:
这样可以方便地匹配源自本地主机的连接:
b4lqfgs43#
如果您在虚拟主机内使用apache 2.2,则应添加以下指令(mod_authz_host):
您甚至可以指定子网
Apache2.4看起来和配置有点不同。也许你最好指定你使用的是哪个版本的apache。
gr8qqesn4#
在Apache 2.4中,授权配置语法已更改,不应再使用
Order
、Deny
或Allow
指令。新的方法是:
Apache文档中提供了使用新语法的更多示例:Upgrading to 2.4 from 2.2