Apache:限制对虚拟主机内特定源IP的访问

时间:2013-10-31 16:19:21

标签: apache apache2

我在同一个apache服务器上有几个命名的虚拟主机,我需要确保一个虚拟主机,以确保只允许一组特定的IP地址访问。

请建议最好的方法。我看过mod_authz_hosts模块,但看起来我不能在虚拟主机内部进行。

4 个答案:

答案 0 :(得分:41)

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>

参考:https://askubuntu.com/questions/262981/how-to-install-mod-authz-host-in-apache

答案 1 :(得分:19)

对于Apache 2.4,您将使用Require IP directive。所以只允许来自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>

如果您只是希望localhost机器具有访问权限,那么就有一个特殊的Require local directive

  

如果满足以下任一条件,本地提供程序允许访问服务器:

     
      
  • 客户地址匹配127.0.0.0/8
  •   
  • 客户端地址为:: 1
  •   
  • 连接的客户端和服务器地址都相同
  •   
     

这样可以方便地匹配源自本地主机的连接:

<VirtualHost *:80>
    <Location />
      Require local
    </Location>
    ...
</VirtualHost>

答案 2 :(得分:6)

如果您在虚拟主机中使用apache 2.2,则应添加以下指令(mod_authz_host):

Order deny,allow
Deny from all
Allow from 10.0.0.1

您甚至可以指定子网

Allow from 10.0.0

Apache 2.4看起来与配置略有不同。 也许你更好地指定你使用的是哪个版本的apache。

答案 3 :(得分:3)

在Apache 2.4中,授权配置语法已更改,并且不再使用OrderDenyAllow指令。

执行此操作的新方法是:

<VirtualHost *:8080>
    <Location />
        Require ip 192.168.1.0
    </Location>
    ...
</VirtualHost>

使用新语法的更多示例可以在Apache文档中找到:Upgrading to 2.4 from 2.2