我有一台 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
并且bar
DocumentRoot 时仍然是交叉连接的。
为什么以及如何说服 Apache 2.2 代理到正确的服务器?
答案1
所呈现的配置应该可以工作。您只获得第一个 vhost 交付,这表明未显示的其他内容配置有误。
检查您是否有合适的NameVirtualHost
指示。