Domain-Name-System

DNS 設置:SaaS 的 CNAME 與萬用字元

  • May 8, 2013

所以我是新手,真正關心 DNS 的實際工作方式,而不是插入東西和故障排除。我有一個應用程序,它將根據使用者訪問的域顯示不同的資訊。但是,我不太確定它最終是如何工作的。

在我的腦海中,我有兩種可能的解決方案: 1. 我的 DNS 為每個實例創建一個新的 CNAME 2. 我使用萬用字元 *.mysite.com 使 DNS 保持簡單

這兩種方式都可以嗎?

  • 這兩種方式都可以嗎?
  • 關於選項 2,我能否知道使用者來自哪個 CNAME,以便顯示正確的資訊?
  • 如果兩者都可行,哪一個會更好?

我的堆棧以 AWS 為中心,所以我使用的是 Route 53,如果我選擇第一個選項,我會使用他們的 API。

我將假設這是針對 Web 應用程序的,是的,這兩種方法都可以使用。

假設您使用 CNAMES:

sitea.domain.com  CNAME  server.domain.com
siteb.domain.com  CNAME  server.domain.com
server.domain.com  A  1.2.3.4

當您sitea.domain.com在網路瀏覽器中輸入時,您的 dns 解析器將嘗試獲取基於 CNAME 的 IP 地址,該地址將返回為1.2.3.4. 然後瀏覽器將連接1.2.3.4並嘗試檢索該網站sitea.domain.com

在 Web 伺服器上,您可以為每個域配置不同的虛擬主機,或者可能更適用於您的情況,擁有一個處理所有請求的網站並使用HTTP_HOST環境變數來確定使用者輸入的主機名,並從中顯示相關資訊。

萬用字元可能會使您的應用程序更容易,因為您無需在每次需要新主機名時添加更多 dns 條目。(您也可以將萬用字元設為直接指向 IP 的 A 記錄,但這並沒有太大區別):

*.domain.com A 1.2.3.4

或者

server.domain.com  A  1.2.3.4
*.domain.com  CNAME  server.domain.com

這將以幾乎完全相同的方式執行 - 使用者放入xyz.domain.com他們的網路瀏覽器,它被解析為1.2.3.4,他們連接到1.2.3.4並請求網站xyz.domain.com

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