將外部 HTTP 流量路由到網路內的多台計算機

將外部 HTTP 流量路由到網路內的多台計算機

這顯然是可能的,因為這是所有網路農場所做的,但我不是網路農場。

我確實擁有相當不錯的技術能力(主要是 Windows),但我很樂意設定一個簡單的 Linux 盒子來實現這一點。

目前我有一個面向互聯網的路由器,它允許流量透過不同連接埠傳輸到一台機器。這工作正常,我可以在那一台機器上運行多個網站,但是我希望能夠攔截流量並根據網域發送到單獨的機器。

Reporting.example.com => PC1
Demos.example.com => PC2
MySite.example.com => PC1
Three.example.com => PC3
(all domain obviously resolve to my single internet facing IP address).

我可以得到一個可以做到這一點的路由器嗎(我知道連接埠轉送等,但它們只在連接埠上工作),我可以設定一個帶有轉發器的中間linux/XP盒子嗎?有簡單的解決方案嗎?

答案1

這不是唯一的方法或最好的方法,但這就是我會採取的方法。如果我誤解了您問題中的任何事實,請糾正我

  1. 路由器擁有 WAN IP。如果您的路由器允許指定主機名稱到 ip 映射,您可以嘗試透過將每個網域對應到網路的內部 IP 來新增該映射。

  2. 如果路由器無法做到這一點,您可以在一個系統上設定反向代理,以按網域將流量轉送到後端系統。這很方便,因為您也可以使用它進行故障轉移。

這是 apache 作為反向代理的虛擬主機設定範例。

ServerName Demos.example.com
ProxyPreserveHost On
ProxyTimeout 5400
ProxyPass / http://LAN_IP1 max=20 ttl=5000 retry=300
ProxyPassReverse / http://LAN_IP1/

ps 您不需要擁有專用的反向代理伺服器,您可以使用現有系統之一來做到這一點,這可以在本地為一個網域提供服務並代理其他網域。該特定係統必須是您的路由器將所有網路流量轉送到的系統。

答案2

Vangels 的解決方案效果很好,我已經在這裡為其他人澄清了。

這需要放入 http.conf 檔案中

<VirtualHost *:80> 
 ServerName Demos.example.com
 ProxyPreserveHost On
 ProxyTimeout 5400
 ProxyPass / http://LAN_IP1 max=20 ttl=5000 retry=300
 ProxyPassReverse / http://LAN_IP1/
</VirtualHost >

您還需要啟用以下模組

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

相關內容