我有一個公共IP位址、一台路由器和路由器後面的多台伺服器。
我想透過路由器將不同的網域(全部使用 HTTP)轉送到不同的伺服器。
例如:
example1.com => 192.168.0.110
example2.com => 192.168.0.120
foo.example2.com => 192.168.0.130
bar.example2.com => 192.168.0.140
我知道這可以使用連接埠轉送來完成,但我需要所有主機都在連接埠 80 上運行。
我找到了一些關於IP Masquerading的信息,但我發現這很難理解,我不確定這是否是我所追求的。
我發現的另一個解決方案是將所有流量定向到反向代理伺服器,該伺服器將請求轉發到適當的伺服器。 iptables 怎麼樣?
我使用的是 Billion 7404 VNPX 路由器。該路由器有什麼功能可以實現此目的嗎?
這些是我唯一的選擇嗎?我完全錯過了什麼嗎?是否推薦其中一個而不是其他?
我已經四處搜索,但我認為我沒有找到正確的關鍵字。
答案1
最好的解決方案是使用 HTTP 反向代理。為此,您可以使用:
我們正在使用 apache 和 mod_proxy,但我想使用 pound。
作為硬體設備,您可以使用思科內容服務交換器。看:http://www.cisco.com/en/US/products/hw/contnetw/ps792/index.html
答案2
我有一個想法,我想知道是否有人對此有任何反饋。
如果我使用反向代理的想法,我想我可以很簡單地解決這個問題。我已經在其他伺服器上使用 Nginx,所以這是我選擇的反向代理伺服器。
在路由器上,我會將連接埠 80 上的所有傳入連線轉送到我的反向代理伺服器。我將使用以下設定檔在此伺服器上執行 Nginx:
server {
listen *:80;
location / {
proxy_pass http://$host;
}
}
這似乎是將請求代理到同一主機。但這是技巧,在我的 /etc/hosts 檔案中,我將把所有網域對應到它們的內部 IP。
182.168.0.110 example1.com
182.168.0.120 example2.com
182.168.0.130 foo.example2.com
182.168.0.140 bar.example2.com
所以反向代理伺服器會將請求的主機路由到同一台主機,但此時它應該尋找本機主機文件,並將其對應到內部 IP 位址。這也意味著我可以「設定並忘記」Nginx 設定檔。
一個潛在的問題是,如果尚未配置本機主機名,則反向代理會將請求傳送回網際網路。不過,我認為 NAT 會阻止這種情況陷入無限循環。
這個解決方案似乎在我的腦海中和紙面上有效,但我暫時無法設定它。
有人能看出這行不通的任何原因嗎?
謝謝。