Apache-2.2

從一個 IP 上的 mod_rewrite/多個埠移動到多個 IP

  • March 28, 2013

我們有一台伺服器,希望執行多個版本的內部 Intranet 應用程序,並通過 Web 瀏覽器通過其名稱訪問它們,無需埠號。

這是我們目前的設置:在dnsmgmt我們有一些 CNAME 別名:‘intranet’、‘dev’、‘production’ 等都指向servername.ourdomain.lan.. 然後,我們有一個指向其靜態 IP 的 servername 的 Host (A) 記錄。

然後,我們讓每個 Intranet 應用程序版本執行自己的 httpd 實例,再加上一個用於“intranet”的實例。現在,Intranet 的配置文件讓它偵聽埠 80(其他埠有自己的埠),並使用 mod_rewrite 將流量從別名重定向到同一事物,但添加了特殊埠。這使得如果你去http://dev/,內部它是,http://dev:1234/但對使用者來說,它看起來像他們輸入的內容。我們也有其中一些的外聯網版本,所以如果你願意,你可以使用埠號在網路外訪問。

如果我們出於以下原因擺脫 mod_rewrite 層,那就太好了:

  1. 它掩蓋來自 mod_perl 的重要資訊以用於調試目的,例如請求來自的原始 IP 地址(僅顯示伺服器的 IP)——可以使用另一個模組來獲取此資訊

  2. 當內網服務宕機時,app的所有版本都無法訪問,所以:

  3. 對該服務的任何更改都必須在下班後完成

  4. 萬一出事影響內網服務就更危險了

  5. 每個請求和啟動時的成本更大

  6. 如果出現問題或需要進行更改,則需要查看更多程式碼

有可能我一開始只是以這種方式設置它,因為我不知道還有另一種方式——可能找到了更適用於託管服務提供商而不是內部 Intranet 伺服器的幫助/文件。

我想這樣做:

  1. 添加更多IP地址,每個服務一個
  2. 配置我們的 Intranet 應用程序的 httpd.confs 以偵聽其新 IP 地址的埠 80(或者更好的是,其別名的埠 80)
  3. 將 CNAME 別名替換為指向新 IP 地址的主機 (A) 記錄,而不是servername.ourdomain.lan.
  4. 配置我們的路由器以將外部網請求重新路由到適當的 IP 而不是埠
  5. 刪除內網的 CNAME 並關閉

認為這應該允許從內部和外部使用與以前相同的瀏覽器服務。

我的問題是,這種設置有什麼缺點/甚至可以這樣做/這樣做是否明智?我以前從未嘗試過執行多個內部 IP。這會弄亂我們的內部網嗎?我們的外聯網?我們的伺服器一般?我們的網路一般?

至少有一個陷阱:

出於某種原因,添加 IP 地址似乎會導致某些程序(其中包括 SQL Server、httpd、dns、lsass)綁定(有時)與它們的連接,即使我沒有明確告訴這些服務新的 IP 地址(在事實上,httpd 設置為 Listen intranet:80 和 Listen dev:12222,所以為什麼它綁定到這些名稱以外的任何東西,我不確定。)也許他們正在做某種負載平衡,即使網路負載平衡不是’未在 TCP/IP 屬性中勾選。

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