Apache-2.2

如何根據主機名在同一 IP 上的不同網路伺服器之間切換?

  • January 2, 2012

在我的地方,我有 4 台伺服器,每台執行 Win2008r2-WEB 作為網路伺服器執行,執行所有不同類型的伺服器(TomCat、IIS、Apache、ZendServer),每台伺服器也有不同的 IP 地址(10.0.0.0/24)

有沒有辦法根據主機名將流量路由到每個伺服器?(例如:apache.domain.org、iis.domain.org、tomcat.domain.org、zend.domain.org)

顯然,我無法將 A 記錄更改為內部 IP,並且我無權更改埠。

另外由於代理的原因,我不能只使用其他埠,我只能訪問 :80 傳入。

要使其正常工作,您需要做的是將單個現有 Web 伺服器(或專用於該任務的單獨伺服器)配置為反向代理。

它將負責獲取公共地址上的請求並讀取主機標頭,然後根據請求的主機將請求代理到適當的私有地址。

此任務的常用軟體包是 Apache(您可以使用現有實例)、nginx 或 HAProxy。這裡有很多關於適當配置這些問題的資訊(“反向代理”是可以讓你到達那裡的搜尋詞),但如果你有一個特定的這些軟體包,那麼我可以用一個例子來編輯這個答案配置。

編輯:範例 Apache 配置:

NameVirtualHost *:80

<VirtualHost *:80>
   ServerName apache.domain.org
   ServerAlias www.apache.domain.org
   # For this one, we'll imagine that you want to serve these resources from
   # the local server.  If you want do use a separate Apache instance instead,
   # then copy one of the other hosts for this one.
   DocumentRoot "C:\path\to\site\files"
   <Directory "C:\path\to\site\files">
       Order allow,deny
       Allow from all
   </Directory>
   # Any other directives you need for the content here
</VirtualHost>

<VirtualHost *:80>
   ServerName iis.domain.org
   ServerAlias www.iis.domain.org
   # Replace the URL below with the URL of the IIS server - make sure
   # to keep the trailing slash.
   ProxyPass / http://10.x.x.1:80/
   ProxyPassReverse / http://10.x.x.1:80/
</VirtualHost>

<VirtualHost *:80>
   ServerName tomcat.domain.org
   ServerAlias www.tomcat.domain.org
   # Replace the URL below with the URL of the Tomcat server - make sure
   # to keep the trailing slash.
   ProxyPass / http://10.x.x.2:8080/
   ProxyPassReverse / http://10.x.x.2:8080/
</VirtualHost>

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