Apache-2.2

單個域名可能解析到多個伺服器

  • October 31, 2012

第一次來伺服器故障,我提前道歉,這個領域的東西並不是我的強項。非常感謝任何和所有建議。我完全迷失了,非常累!

我從我的前任那裡繼承了一個令人難以置信的複雜系統,我正試圖找到解決它的方法——或者我需要被告知這是不可能的。

  • 我有一個舊站點ServerA(某種 Linux 發行版),其域SomeDomain.com
  • ServerB(Ubuntu)上有一個新站點,打算SomeDomain.com在未來提供服務(它正在替換舊站點)
  • ServerA還有一個網路應用程序,目前公司內其他部門正在使用(可訪問SomeDomain.com/web-app/

**目標:**讓SomeDomain.com該域名的所有副檔名(子域、URL 等)在ServerB. 但是,該 URLSomeDomain.com/web-app/必須在ServerA.

**問題:**這ServerA是一個與託管公司共享的伺服器,具有非常有限的限制 - 我無法調整 DNS 設置(除了名稱伺服器 - 但不能設置 A 記錄或任何東西,我可以ServerB按照我的意願完全訪問)。因此,網路應用程序必須SomeDomain.com/web-app/從子域或任何東西中提供,而不是從子域提供。這些限制使得將網路應用程序從遷移Server AServer B相當不可取,並且該網路應用程序將在不久的將來被替換,因此現在不值得努力。

因此,最終我希望 1 域名Server B大部分時間解析為 的 IP 地址,但如果 URL 為SomeDomain.com/web-app/,則應解析為Server A的 IP。

注意:從技術上講,域名不必解析為一個 IP 或另一個 - 但最終 URL 必須保持一致

我嘗試過的一些事情:

  • 我已經查看了 mod_rewrite 和 .htaccess 以嘗試實現此效果,但它看起來對我不起作用 - 但我可能做錯了(在Server B,我只是檢查了請求 URI 是否是/web-app/並嘗試過提供/web-app/文件夾Server A
  • 我確實有能力修改兩台伺服器上的名稱伺服器
  • 我無法在Server A該點上創建一個子域Server A(我假設是因為託管公司的伺服器使用 URL 來確定服務的站點)。我認為這可能很好,因為我可以設置一個 A 記錄Server B來指向網路應用程序Server A- 但唉,Server A需要SomeDomain.com.

如果我可以提供更多資訊,請告訴我。我需要推動正確的方向、想法或解決方案。

這裡有很多問題,這使得它不像它應該的那麼容易。

首先,我認為最好的處理方法是:

  1. 如果您無法更改伺服器 A 上的設置,請將其保留為www.somedomain.com
  2. 將伺服器 B 上的完全限定域名設置為www2.somedomain.com.
  3. 添加使用 mod rewrite 或任何您喜歡將流量從 重定向www2.somedomain.com/web-appwww.somedomain.com/web-app.

現在了解詳情。

DNS 伺服器將 fqdn 解析為 IP 地址。他們無法幫助您處理低於此範圍的任何事情(例如路徑)。DNS 請求甚至不包含請求路徑。

在共享伺服器上,幾乎可以肯定它使用 HTTP 1.1 和基於名稱的虛擬主機。換句話說,盒子有一個 IP 地址,它查看請求中的 HOST 標頭以確定要服務的站點。因此,如果您執行基於 IP 地址的重定向,伺服器 A 只會收到一個 HTTP 請求123.123.123.123/web-app/foo,並且在該伺服器上擁有大量站點,它將不知道如何處理它。

由於您的伺服器具有不同的內容(至少對於一個路徑),並且您不能使用基於 IP 地址的重定向,因此您必須使用不同的 fqdn 來區分它們。

由於舊站點可能已經設置www.somedomain.comServerName並且聽起來您無法更改它,因此您唯一的選擇是創建一個新的伺服器名稱。

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