直到最近,我还有一堆虚拟网站设置如下:
<VirtualHost 127.0.0.1:1234>
...
这适用于在我使用Linux桌面的本地计算机上进行测试。为了测试MS和资源管理器如何从我的Windows笔记本电脑显示我的页面,我将其更改为
<VirtualHost *:1234>
...
哪个也可以正常工作,在笔记本电脑的IE上从http://[mylinuxservername]:1234调用该网站。但是,我想将该通配符限制为本地局域网。插入任何ip,如192.nnn.nnn.nnn或192。*。*。*,其中通配符在上面导致在Windows机器上403 Forbidden。本地服务器在我的Linux机箱上仍能正常工作:
<VirtualHost 127.0.0.1:1234 192.*.*.*:1234>
...
或
<VirtualHost 127.0.0.1:1234 192.nnn.nnn.nnn:1234> #exact IP of laptop
...
无论如何,我不喜欢上面第二个配置示例中的那个通配符。提示任何人?
答案 0 :(得分:12)
VirtualHost
的参数是您收听的本地地址,而不是远程地址。
在Apache 2.4及更高版本中,使用Require
指令:
Require ip 127.0.0.0/8
Require ip 192.0.0.0/8
如果您使用的是Apache 2.2或更早版本,请使用authz_host配置:
Order Allow,Deny
Allow from 127.0.0.0/8
Allow from 192.168.0.0/16
这也适用于Apache 2.4,但Order
and Allow
have been deprecated。
答案 1 :(得分:4)
请注意,以防有些像我一样的人来到这里:)
通过将指令放在纯文本中来配置Apache HTTP Server 配置文件。通常调用主配置文件 httpd.conf中。 Main Configuration Files
mod_access_compat提供的Allow,Deny和Order指令, 已弃用,将在未来的版本中消失。你应该避免 使用它们,并避免过时的教程推荐使用它们。 Access Control
Require ip 127.0.0.0/8
Require ip 192.0.0.0/8
或(不完全相同)
Require ip 127.0
Require ip 192.168
答案 2 :(得分:0)
使用iptables限制对计算机本身的访问。第一个命令将允许来自192范围内任何网络的HTTP流量(请注意,我认为您需要192.168才能真正本地但我可能会错误)。第二个命令只是从端口80的其他源丢弃数据包
iptables -I 1 INPUT -s 192.0.0.0/8 -p tcp --dport 80 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -I 2 INPUT -p tcp --dport 80 -m state --state NEW -j DROP
然后在您的虚拟主机中,您可以执行<VirtualHost *:80>