Apache2访问受限于本地局域网

Apache2访问受限于本地局域网,apache2,virtualhost,Apache2,Virtualhost,直到最近,我还建立了很多虚拟站点,如下所示: <VirtualHost 127.0.0.1:1234> ... ... 这对于在我的本地机器上进行测试非常有效,我使用的是Linux桌面。为了测试MS和explorer如何从Windows笔记本电脑显示我的页面,我将其更改为 <VirtualHost *:1234> ... ... 这也很好,从我笔记本电脑的IE上调用该站点。但是,我想将该通配符限制在本地lan上。插入任何ip,如192.nnn.

直到最近,我还建立了很多虚拟站点,如下所示:

<VirtualHost 127.0.0.1:1234>
    ...

...
这对于在我的本地机器上进行测试非常有效,我使用的是Linux桌面。为了测试MS和explorer如何从Windows笔记本电脑显示我的页面,我将其更改为

<VirtualHost *:1234>
    ...

...
这也很好,从我笔记本电脑的IE上调用该站点。但是,我想将该通配符限制在本地lan上。插入任何ip,如192.nnn.nnn.nnn或192.*.*如果通配符在上面,则会导致在windows计算机上禁用403。本地服务器在我的Linux机器上仍然可以正常工作:

<VirtualHost 127.0.0.1:1234 192.*.*.*:1234>
    ...

...

#笔记本电脑的确切IP
...
无论如何,我不喜欢上面第二个配置示例中的通配符。有人提示吗?

VirtualHost的参数是您侦听的本地地址,而不是远程地址

在Apache 2.4及更新版本中,请使用以下指令:

Require ip 127.0.0.0/8
Require ip 192.0.0.0/8
如果您使用的是Apache 2.2或更早版本,请使用以下配置:

Order Allow,Deny
Allow from 127.0.0.0/8
Allow from 192.168.0.0/16

这可能也适用于Apache 2.4,但是。

使用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 

然后,在虚拟主机中,您可以执行

只要注意一下,以防像我这样的noob来到这里:)

Apache HTTP服务器是通过以纯文本形式放置指令来配置的 配置文件。主配置文件通常被调用 httpd.conf。

对于2.4版 mod_access_compat提供的Allow、Deny和Order指令, 已弃用,将在未来版本中消失。你应该避免 使用它们,并避免过时的教程推荐使用它们。

(不完全相同)


这可能是在ServerFault上-虽然IIRC,但您的问题是您没有将请求的IP放在VirtualHost标记中-它放在位置或目录块中。谢谢!效果很好。前斜杠后ip末尾的数字是什么意思?杰克,/8和/16是子网掩码的长度。这是如此多的奥秘,如此少的时间:-)谢谢@~杰克·拉普兰特(jack laplante)已经回答了Ted的问题:CIDR表示法(不变位的数量)这已经被弃用,取而代之的是“require”。请把这一票否决,把阿帕切努布的答案否决
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 
Require ip 127.0.0.0/8
Require ip 192.0.0.0/8
Require ip 127.0
Require ip 192.168