Ubuntu

配置多台伺服器使用子域共享一個靜態 IP

  • December 4, 2012

我正在尋找一種通過使用不同的子域來訪問共享單個靜態 ip 的多個伺服器的方法。作為預警,我以前從未接觸過網路配置,因此我對適當術語的了解有限。

現在我有 3 台執行 ubuntu 11.10 的伺服器坐在交換機後面。我想以 server1.example.com、server2.example.com 和 server3.example.com 的身份訪問它們。當所有 3 台機器都配置了相同的靜態 IP 時,只有一台機器擁有網際網路連接。因此,在嘗試按照本指南配置 iptables 之前,我花了很多時間在 /etc/network/interfaces 中進行試驗,這可能是一個很大的錯誤。

我不知道從哪裡開始,甚至不知道Google是什麼。也許我需要不同的硬體配置,目前每台機器都有一個網卡,但如果需要我可以找到網卡。除了交換機,我還有一個舊的 wrt54g 路由器。

編輯

我主要希望通過 HTTP 訪問它們,但 SSH 也很重要。

您將無法讓所有 3 台機器共享一個 IP 地址。不是網路如何工作。查看有關網路路由如何工作的答案,以了解原因。

**你可以做什麼:**設置一個反向代理作為你的網關,然後讓它根據 HTTP 主機請求標頭轉發一個地址。我會推薦使用Pound,因為它是輕量級的,而且它的唯一目的是成為一個反向 HTTP 代理。如果你更熟悉的話,你可以使用 apache 或 nginx 來完成同樣的事情。

設置好反向代理後,您可以為您的伺服器使用 NAT,並使用您的靜態 IP 配置您的網關。

如何在 Pound 中執行此操作的範例(1.2.3.4是您的靜態 IP,server#.example.com都是該靜態 IP 的 A 記錄):

ListenHTTP
       Address 1.2.3.4
       Port    80
       Service
           HeadRequire "Host: .*server1.example.com.*"

           BackEnd
               Address 192.168.3.11
               Port    80
           End
       End
       Service
           HeadRequire "Host: .*server2.example.com.*"

           BackEnd
               Address 192.168.3.12
               Port    80
           End
       End
       Service
           HeadRequire "Host: .*server3.example.com.*"

           BackEnd
               Address 192.168.3.13
               Port    80
           End
       End
End

對評論的回應

如果您想將反向代理保留在您擁有的目前伺服器之一中,您必須:

  1. 選擇其中一台伺服器作為反向代理。
  2. 讓您的路由器將所有 HTTP 流量轉發到該反向代理。
  3. 在 3 上配置您的 HTTP 伺服器server#.example.com以偵聽備用埠——也許是 8080。
  4. 最後,配置您的反向代理以根據host標頭將流量轉發到埠 8080 上的 HTTP 服務。

在 HTTP 伺服器上配置備用埠應該非常簡單。唯一稍微困難的部分是配置反向代理,但您可以找到許多使用 pound、apache 或 nginx 完成的範例。

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