题
直到最近,我还有一堆虚拟网站设置如下:
<VirtualHost 127.0.0.1:1234>
...
这适用于在我使用Linux桌面的本地计算机上进行测试。为了测试MS和资源管理器如何从我的Windows笔记本电脑显示我的页面,我将其更改为
<VirtualHost *:1234>
...
哪个也行得正常,在我的笔记本电脑上通过 http:// [mylinuxservername]:1234 调用网站IE浏览器。但是,我想将该通配符限制为本地局域网。插入任何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
...
无论如何,我不喜欢上面第二个配置示例中的那个通配符。提示任何人?
解决方案
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 代码>和
。允许
已被弃用
其他提示
使用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
然后在您的虚拟主机中,您可以执行&lt; VirtualHost *:80&gt;
不隶属于 StackOverflow