Apache-2.2

如何在同一個 Apache 2.2 伺服器上擁有兩個虛擬主機

  • February 17, 2017

我有一個 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 me@mydomain.com
   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 me@mydomain.com
   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並且barDocumentRoot 仍然交叉連接時。

為什麼以及如何說服 Apache 2.2 代理到正確的伺服器?

呈現的配置應該可以工作。您只收到傳遞的第一個虛擬主機表明其他未顯示的內容配置錯誤。

檢查您是否有合適的NameVirtualHost指令。

引用自:https://serverfault.com/questions/833232