我正在一些设置基于 IP 的虚拟主机时出现问题。首先,我在 Windows 7 上使用 apachefriends 的当前 XAMPP(XAMPP 1.7.7 和 Apache 2.2.21)。
“主”服务器(来自httpd.conf
)上的基本功能运行完美。但现在我想设置具有不同 IP 地址的多个虚拟主机,因为我将网卡配置为使用从 192.168.2.95 到 192.168.2.105 的所有 IP 地址。
这是虚拟主机条目:
<VirtualHost 192.168.2.96:80>
DocumentRoot "/xampp/hegedocs/www"
ServerName 192.168.2.96:80
</VirtualHost>
httpd -D DUMP_VHOSTS
说:
PS G:\xampp\apache\bin> ./httpd -D DUMP_VHOSTS
VirtualHost configuration:
192.168.2.96:80 192.168.2.96 (G:/xampp/apache/conf/extra/httpd-vhosts.conf:45)
Syntax OK
但是我无法访问 vhost,Apache 似乎也无法在 192.168.2.96:80 上监听 - 该地址没有显示任何条目netstat -a -b
。
答案1
我发现了问题:基于 IP 的虚拟主机根本不起作用。只需在主机文件中定义几个名称(foo.localhost、bar.localhost 都映射到同一个 IP 地址),然后使用基于名称的虚拟主机就可以正常工作。当然,这不像 IP 地址那样可移植,因为网络中的其他机器自然不知道这些名称……但好吧,只要它能以某种方式工作……
答案2
答案3
以下是您可以尝试添加的一些基本内容,以确保您获得正确的端口。
# Ensure that Apache listens on port 80
Listen 80
# Listen for virtual host requests on all IP addresses
NameVirtualHost *:80
下面是来自 appache 的一个示例,它看起来应该是这样的:
<VirtualHost *:80>
DocumentRoot /www/example1
ServerName www.example1.com
# Other directives here
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /www/example2
ServerName www.example2.org
# Other directives here
</VirtualHost>
我确信您之前已经看到过这一点,但有时回顾一下简单的东西会有所帮助。
我的设置运行良好,在 1 个盒子上运行 2 个网站,使用 ServerName www.example.com。
希望这可以帮助!
答案4
确保 apache 知道 vhost.conf 文件的位置。在 httpd.conf 的底部,您可能需要取消注释
Include conf/*.conf