Domain-Name-System

將客戶的域指向我的伺服器的最佳方式

  • October 23, 2015

我正在創建登錄頁面創建和託管服務。我的客戶將能夠將他們的域連結到他們的帳戶。我正在使用 AWS 和 Route 53。

我正在考慮兩個潛在的系統:

  1. 讓我的客戶更改他們的名稱伺服器以解析為我為他們創建的託管區域

或者

  1. 讓我的客戶創建一個 CNAME 記錄,該記錄指向我的唯一子域,該子域連結到他們的帳戶。

每種方法的優缺點是什麼?他們是一個明顯更好的解決方案嗎?

我的策略如下。除了考慮什麼可行,什麼不可行,我的實踐基於最小的未來客戶互動。您不希望必須聯繫數百甚至數十個客戶來讓他們協調某種變化。

**當不在區域的頂點時,**我有一個專門用於此目的的域名。假設用於這些目的的域名是network.example.org.

我讓客戶創建一個 CNAME。如果新站點的主機名是,client.example.com那麼我讓客戶端創建一個指向client.example.com.network.example.org. 然後,在 Route 53 中,我將client.example.com.network.example.org主機名創建為我的 ELB 端點或 CloudFront 的 A 記錄別名,或者只是彈性 IP 的 A 記錄。(或者,如果我有某種理由,我可以將其設為另一個 CNAME。它們確實是級聯的。)

同樣,這種配置的意義在於,我永遠不必要求客戶重新配置任何東西。無論我的網路如何變化——我需要將它們移動到不同的 ELB,將它們遷移到不同的區域等,我都可以在 Route 53 中進行更改。

**對於區域頂點,**這是不可能的,因為 CNAME 是不可能的,但通常當客戶端想要將區域頂點指向我的系統時,客戶端不會將該域用於其他任何事情。如果是的話,他們可能不會將頂點指向我……所以我在 Route 53 中創建了託管區域,並為他們分配了 4 個分配的名稱伺服器。如果客戶需要額外的記錄,我會出於禮貌添加它們。(您還可以使用 API 或 CLI 在 Route 53 中為白標籤 DNS 伺服器創建可重用委託集,為客戶端提供 ns1…ns4.example.org,而不是“awsdns”主機名,但這可能是如果您打算進行任何基於地理/延遲的路由,則不理想。)

當我向客戶解釋我的 DNS 與我的平台的其餘部分集成時,允許我託管他們的 DNS 使我能夠通過動態更新他們的 DNS 記錄來自動緩解中斷和 DDoS 攻擊,這幾乎總是一個簡單的賣。我託管 DNS 並輸入 MX 記錄,無論他們可能需要什麼,這很少是什麼。

在一種特殊情況下,客戶堅持不僅要保留對 DNS 的控制權,而且該網站處於最高點,而且該網站的員工也可以在防火牆後面訪問該網站——因此他們想要該網站無論如何都要有一個固定的 IP 地址——我用一個具有彈性 IP 地址的 EC2 實例解決了這個難題,這是一個執行 HAProxy 的 t2.micro 並將流量轉發到我的後端系統。HAProxy 寫得非常好,這台 10 美元的機器在過去 24 小時內處理了 896,392 個 http 請求,並且從未超過 6% 的 CPU 使用率。(而且它還在動態壓縮文本、css 和 js。)客戶創建了一個指向彈性 IP 的 A 記錄,如果情況需要,我仍然可以在該區域內重新映射。

當然,在區域頂點,如果客戶端使用支持某種“A-Name”記錄(如 CloudFlare 的“CNAME 扁平化”)的 DNS 提供程序,那麼我將恢復為“不在頂點”配置並給出他們是我域中的目的地,以他們的域作為前綴命名,所以我將保留在沒有他們干預的情況下修改配置的能力……但這從未出現過。

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