5

直到最近,我还设置了一堆虚拟站点,如下所示:

<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
    ...

无论如何,我不喜欢上面第二个配置示例中的通配符。提示任何人?

4

3 回答 3

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,但OrderAllow被弃用

于 2009-06-16T15:22:41.140 回答
4

只是一个说明,以防像我这样的菜鸟来这里:)

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
于 2016-03-20T09:53:51.377 回答
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>

于 2009-06-16T15:24:18.997 回答