我应该如何使用 CloudFront 为我的 GoDaddy 域配置 DNS?

我应该如何使用 CloudFront 为我的 GoDaddy 域配置 DNS?

我有一个静态 Web 应用程序托管在 S3 Bucket 中,目前由 Amazon CloudFront 托管。这是一个旅游网站,所以我希望世界各地的用户都能快速使用它。我还想通过 ACM(Amazon 证书管理器)免费使用 TLS。

实现此目的的最佳实践架构是什么?我并不是想发起讨论或提出开放式问题。请听我说完。

我不太了解 DNS 的工作原理,所以如果我错了,请纠正我。如果我有 GoDaddy DNS 记录到两个 GoDaddy NS 服务器/地址/域/无论它们是什么,这是否意味着任何时候香港用户想要访问我的网站,他们都必须联系那些 GoDaddy DNS 服务器(无论它们在哪里),然后联系 CloudFront 的 DNS 服务器,然后实际联系最近的 CloudFront 服务器并检索我网站的超快本地缓存副本?

您可能已经猜到了,我担心这会降低我网站的访问速度,并且违背了使用 CloudFront 的初衷。这种担心合理吗?我应该如何设置?Route 53 会有所帮助还是会让情况变得更糟?

答案1

如果您的域名已在 GoDaddy 注册,但 DNS 使用 Route53 - 则没有问题。我的简短回答是,这是最快/最好的方法。

以下是我认为 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,它成本每月 50 美分,另加每百万次查询 40 美分。

相关内容