透過NAT路由器將不同的主機名稱轉送到不同的內部IP

透過NAT路由器將不同的主機名稱轉送到不同的內部IP

我有一個公共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 會阻止這種情況陷入無限循環。

這個解決方案似乎在我的腦海中和紙面上有效,但我暫時無法設定它。

有人能看出這行不通的任何原因嗎?

謝謝。

相關內容