這顯然是可能的,因為這是所有網路農場所做的,但我不是網路農場。
我確實擁有相當不錯的技術能力(主要是 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
這不是唯一的方法或最好的方法,但這就是我會採取的方法。如果我誤解了您問題中的任何事實,請糾正我
路由器擁有 WAN IP。如果您的路由器允許指定主機名稱到 ip 映射,您可以嘗試透過將每個網域對應到網路的內部 IP 來新增該映射。
如果路由器無法做到這一點,您可以在一個系統上設定反向代理,以按網域將流量轉送到後端系統。這很方便,因為您也可以使用它進行故障轉移。
這是 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