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

问题描述:

我在同一个Apache服务器上有几个虚拟主机,我需要确保只有一组特定IP地址可以访问。Apache:限制访问虚拟主机内部的特定源IP地址

请建议最好的方法来做到这一点。我看过mod_authz_hosts模块,但看起来好像我可以在虚拟主机内部完成它。

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

+0

谢谢你,这对我有用 – frameworksnow

如果您使用的是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。

+0

感谢您对我能够通过配置此信息在虚拟主机中添加位置标签内的指令 – frameworksnow

+0

@frameworksnow好吧,如果我的回答很有用,而且您不认为这是正确的答案,那么至少投票;) – giuliox

+0

我试过了,但我没有投票权按照SO进行。我希望我很快就能获得更多的声望,并且会回来投票。再次感谢您提供的意见。 – frameworksnow

对于Apache 2.4,你可以使用Require IP directive。所以,只允许从网络192.168.0机。*

<VirtualHost *:80> 
    <Location /> 
     Require ip 192.168.0 
    </Location> 
    ... 
</VirtualHost> 

如果你只是想在本地主机的机器可以访问,那么网络接口地址是127.0.0.1为IPv4或::1对IPv6

<VirtualHost *:80> 
    <Location /> 
     Require ip ::1 
    </Location> 
    ... 
</VirtualHost> 

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

做的新方法,这将是:

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

使用新语法进一步的例子可以在Apache的文档中找到:Upgrading to 2.4 from 2.2