我有一个 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 部分没有任何关系,因为当我注释掉 Proxy* 行foo
并且bar
DocumentRoot 仍然是交叉连接的。
为什么以及如何说服 Apache 2.2 代理到正确的服务器?
呈现的配置应该可以工作。您只收到交付的第一个虚拟主机表明其他未显示的内容配置错误。
检查您是否有合适的
NameVirtualHost
指令。