Apache:远程服务器上的多个虚拟主机

Apache:远程服务器上的多个虚拟主机

我有一个具有 IP 地址的远程服务器10.72.254.248,我想在此服务器上设置多个虚拟主机,并为每个虚拟主机提供不同的端口。

我的httpd.conf:

Listen 80
Listen 3333

NameVirtualHost *:80
NameVirtualHost *:3333

<VirtualHost *:80> 
     DocumentRoot "/path/to/site1/" 
     ServerName *:80
</VirtualHost>

<VirtualHost *:3333> 
     DocumentRoot "/path/to/site2/" 
     ServerName *:3333
</VirtualHost>

如果没有指定端口,它将访问 site1(端口 80)。当我访问10.72.254.248或者10.72.254.248:80成功打开site1

但当我尝试10.72.254.248:3333它不起作用。

该问题与语法有关吗?或者可能与 /etc/hosts 文件有关?或者与防火墙有关?

请帮忙

编辑:

当我尝试连接到10.72.254.248:3333,我收到以下错误信息:

Can't connect to server 10.72.254.248:3333

答案1

检查 netstat -an 并确保 Apache 正在监听端口 3333。检查是否有其他程序正在监听。如果是,则很可能是防火墙问题(iptables -L 并查找允许端口 3333 的规则)。

答案2

首先:“它不起作用”并不是正确的错误描述。你期望看到什么?你实际观察到了什么?

话虽如此,您似乎混淆了基于名称的虚拟主机和基于 IP/端口的虚拟主机的概念。在第一种情况下(您实际上需要NameVirtualHostandServerName指令),您可以在同一个 IP/端口上拥有多个虚拟主机。Apache 通过将客户端随每个请求发送的 Host 标头的内容与虚拟主机的值进行比较来决定使用哪一个ServerName

在您的情况下,端口上只有一个虚拟主机,因此没有必要这样做。因此,您应该删除指令NameVirtualHostServerName指令(尽管格式错误)。

http://httpd.apache.org/docs/2.2/vhosts/name-based.html有关基于名称的虚拟主机概念的更多信息。

相关内容