我正在開發一個網站,我希望透過 foo.com 這樣的裸域提供服務,並透過 AWS S3' 提供服務。
但是,那我可以透過 AWS 找到的文檔給我的印像是,如果我想這樣做,我需要將所有 DNS 轉移到 Amazon 的 Route53。
我不想這樣做,但由於我不能對裸域使用 CNAMES,也不能將 A 記錄指向固定 IP(因為它們可能會發生變化),所以我不確定我的選擇是什麼。
是否有可能僅有的 將裸域的服務委託給另一個提供者,而不需要移動所有內容?
我在 AWS 文件中看到這樣的片段,我可以使用 Gandi 將其新增到我的 DNS 中,但我知道這會委託全部對亞馬遜名稱伺服器的網域處理,我認為我不想要。
foo.com. 172800 IN NS ns-9999.awsdns-99.com.
如果我的提供者 Gandi 不支援 ALIAS 或 ANAME 記錄,我有哪些選擇?
我知道我可以在我用 A 記錄指向的 IP 上啟動一個實例,然後使用它將請求從裸域反彈到託管在 www.foo.com 的靜態站點,但是還有其他選擇嗎?服務的目的,所以除了使用像雲耀, 或者網站管理員,誰替你處理裸域雅紙,你還能做什麼?
答案1
DNS 是一個分層系統,完全不提供僅將區域的頂點記錄委派到其他地方的機制。
最直接的解決方案是將您的 DNS 託管移至 Route 53,因為 Route 53 中的別名記錄透過使用 Route 53 對 S3 網域內容(以及 ELB 和 CloudFront 的內容)的內部知識來解決該問題,以便傳回對您的查詢的正確A 記錄回應。 (別名不是 DNS 記錄類型,而是配置指令。)
我想不出有什麼理由去抵制這樣的改變──你不必改變你的登記員到 Route 53(儘管可以),您只需使用當前的註冊商更改權威名稱伺服器。您可以繼續使用目前的註冊商進行年度續約以及他們提供的任何其他獎勵/捆綁服務...但不適用於 DNS 託管本身。
其他提供者透過將傳入的 DNS 請求代理到「後面」的目的地、尋找目標並將回應的適當部分傳回給原始請求者來實現類似功能的外觀。
這就是 Cloudflare 所做的,也就是「CNAME 扁平化」——
產生回應的 CloudFlare [DNS] 伺服器遵循 CNAME 鏈,以便對來自客戶端(例如瀏覽器)的請求的回應僅包含非 CNAME 資料-通常是 IP 位址。這有效地建立了 A 或 AAAA 記錄。
使用具有靜態 IP 位址和 A 記錄的 Web 代理伺服器是一種可行的選擇,事實上,如果您想使用 SSL 憑證為您的網站提供服務(S3 不支援 SSL),那麼這並不是一個壞選擇。定義域)。如果代理程式與儲存桶位於相同 AWS 區域,則不會產生任何額外的資料傳輸費用,且給定硬體上的代理程式肯定可以比相同硬體上的實際 Web 伺服器提供更多內容,因為沒有磁碟存取。 (在這樣的設定中,一台運行 haproxy 的 t2 micro,我昨天處理了 891,683 個 Web 請求,在一分鐘的 CloudWatch 圖表上從未達到 5% CPU 的水平)。當然,這會帶來額外的成本和可用性問題。
但沒有靈丹妙藥。