直到最近,我还有一堆虚拟网站设置如下:

<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 允许已被弃用

其他提示

请注意,以防有些像我一样的人来到这里:)

  

通过将指令放在纯文本中来配置Apache HTTP Server   配置文件。通常调用主配置文件   httpd.conf中。   主要配置文件

对于版本2.4

  

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

Require ip 127.0.0.0/8
Require ip 192.0.0.0/8

(不完全相同)

Require ip 127.0
Require ip 192.168

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top