Domain-Name-System
DNS 設置:SaaS 的 CNAME 與萬用字元
所以我是新手,真正關心 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