如何在同一台 Apache 2.2 服务器上拥有两个虚拟主机

如何在同一台 Apache 2.2 服务器上拥有两个虚拟主机

我有一台 Apache 2.2 服务器,上面有一个现有的虚拟主机(foo.com),可以代理到内部服务器。

我已向其添加了另一个虚拟主机(bar.com),我想将其代理到不同的内部服务器。

我的 vhost.conf 文件如下所示(减去一些注释和匿名化):

# START
<VirtualHost *:80>
    ProxyPreserveHost On
    ProxyPass / http://foointernal:80/
    ProxyPassReverse / http://foointernal:80/
    DocumentRoot "E:/Apache/htdocs/foo/"
    ServerName foo.com
    ServerAlias foo.com
    ServerAdmin [email protected]
    ErrorLog "E:/Apache/logs/foo_error.log"
    TransferLog "E:/Apache/logs/foo_ccess.log"
</VirtualHost>    

<VirtualHost *:80>
    ProxyPreserveHost On
    ProxyPass / http://barinternal:80/
    ProxyPassReverse / http://barinternal:80/
    DocumentRoot "E:/Apache/htdocs/bar/"
    ServerName bar.com
    ServerAlias bar.com
    ServerAdmin [email protected]
    ErrorLog "E:/Apache/logs/bar_error.log"
    TransferLog "E:/Apache/logs/bar_access.log"
</VirtualHost>    
# END

当我打开http://foo.com在浏览器中,一切正常。我获得了我期望的内部服务器,等等。

当我打开http://bar.com在浏览器中,我获取了 foo.com 使用的内部服务器

它似乎与代理部分没有任何关系,因为当我注释掉 Proxy* 行foo并且barDocumentRoot 时仍然是交叉连接的。

为什么以及如何说服 Apache 2.2 代理到正确的服务器?

答案1

所呈现的配置应该可以工作。您只获得第一个 vhost 交付,这表明未显示的其他内容配置有误。

检查您是否有合适的NameVirtualHost指示。

相关内容