我應該如何使用 CloudFront 為我的 GoDaddy 域配置 DNS?
我有一個靜態 Web 應用程序託管在我目前使用 Amazon CloudFront 託管的 S3 儲存桶中。這是一個旅遊網站,所以我希望世界各地的使用者能夠快速使用它。我還想通過 ACM(Amazon Certificate Manager)免費使用 TLS。
這樣做的最佳實踐架構是什麼?我不是要開始討論或提出開放式問題。聽我說。
我不太了解 DNS 的工作原理,如果我錯了,請糾正我。如果我有兩個 GoDaddy NS 伺服器/地址/域/無論它們是什麼的 GoDaddy DNS 記錄,這是否意味著任何時候香港使用者想要訪問我的網站,他們必須聯繫這些 GoDaddy DNS 伺服器,無論他們在哪裡是,然後聯繫 CloudFront 的 DNS 伺服器,然後實際聯繫最近的 CloudFront 伺服器並檢索我的網站的超快速本地記憶體副本嗎?
正如您可能猜到的那樣,我擔心這會減慢對我網站的訪問速度,並破壞一開始就使用 CloudFront 的目的。這是一個有效的擔憂嗎?我應該如何設置?53 號公路會幫助還是讓事情變得更糟?
如果您在 GoDaddy 註冊了您的域,但使用 Route53 作為 DNS - 沒問題。我的回答的簡短版本是這是最快/最好的方法。
這就是我認為 DNS 的工作方式。如果我不正確,我很樂意進行編輯或刪除答案。
瀏覽器會為您的域查找 DNS,該域與 GoDaddy DNS 伺服器一起使用,無論它們在哪裡。對 GoDaddy 進行 DNS 查找以獲取 CNAME(這是 AWS CloudFront IP 的別名)可能需要 20 - 200 毫秒。然後針對 AWS DNS 伺服器對第一次 DNS 查找的結果進行另一次 DNS 查找,該伺服器很可能會返回一個 A 記錄/IP 地址,這可能是 10 - 40 毫秒。所以,是的,有兩個 DNS 查找。
DNS 伺服器處於層次結構中,因此如果您的本地 DNS 伺服器沒有您需要的記錄,則可能需要更長的時間。
如果您有 Route53 DNS 記錄,那麼第一次 DNS 查找會更快。CloudFlare 有一個很好的免費層,也有一個非常快速、分佈良好的 DNS 系統。
一個小問題是您不能將 CNAME 放在域的根目錄(即 example.com),但可以放在子域(即 www.example.com)上。Route53 和 CloudFlare 都有解決方法。如果您使用的是 GoDaddy DNS,我不確定它是如何工作的 - 可能是自定義功能,或者您可以讓 Web 伺服器偵聽域根目錄上的請求,執行 301 重定向到 www 子域。不過,這又是一跳。
短版:最好使用 Route53,每月花費50c,外加每百萬查找 40 美分。