为什么在 Route 53+S3 组合中使用 CNAME

为什么在 Route 53+S3 组合中使用 CNAME

我一直在经历亚马逊的文档使用 Route 53 与 S3 结合来提供静态网站服务。

他们展示的策略是:

example.com A -> alias to s3-website-eu-west-1.amazonaws.com (example.com bucket)
www.example.com CNAME -> www.example.com.s3-website-eu-west-1.amazonaws.com

example.combucket 设置为托管静态内容,并且www.example.combucket 设置为永久重定向到example.com

这很好并且可以工作,但是因为我正在尝试学习和了解 DNS 的详细工作原理,所以我不明白为什么他们不简单地这样做:

example.com A -> alias to s3-website-eu-west-1.amazonaws.com (example.com bucket)
www.example.com A -> alias to s3-website-eu-west-1.amazonaws.com (www.example.com bucket)

这难道不会有助于减少一个额外的 DNS 解析步骤(A查找www.example.com.s3-website-eu-west-1.amazonaws.com)吗?

考虑到 Route 53 具有直接为存储桶设置别名的功能,那么在这里使用 CNAME 有什么好处吗?

需要明确的是,使用 CNAME 是可行的,但我试图从学术上理解为什么他们不建议使用 A 别名。

答案1

我认为,在理解 DNS 本身的工作原理方面,重要的是要注意,没有这样的事情别名他们推荐的记录example.com,这完全是 Route53 的功能,他们在后台解析指定的名称并A在 DNS 中公开标准记录(无论您在创建时选择哪种记录类型,但在他们的示例中它是一条A记录)。

为什么他们选择不建议使用他们的别名的功能www.example.com也不完全明显。也许使用常规静态记录对他们来说只是开销更少?也许他们认为常规静态记录更可靠?也许还有其他记录比理想情况Awww.example.com.s3-website-eu-west-1.amazonaws.com应该存在的记录更可靠,但他们觉得不能要求您逐个添加别名(CNAME无论请求的记录类型如何,都将名称作为其他记录的别名)?

然而,相反,CNAME在两种情况下都使用 不是一个选项。由于CNAME记录不能与其他数据共存,因此永远不可能CNAME在区域顶点处有 ,因为那里总是至少有SOANS记录。

答案2

我不知道亚马逊的东西,但在那里的文档中,他们提到了别名记录和 CNAME 记录。两者是一样的。CNAME 将一个 FQDN 映射到另一个 FQDN。对我来说,这是别名的定义(同一事物的另一个名称)。AA 记录仅映射到 IPv4 地址(参见RFC1035

请注意,www.example.com 和 example.com 是两个不同的 FQDN,并且没有理由将它们映射到相同的 IP 地址。(例如,fdn.fr 没有 A 记录也没有 CNAME,而 www.fdn.fr 有 CNAME)只有“如果您想从根域提供内容”时才需要这种复杂的操作。这样,example.com 和 www.example.com 都必须映射到相同的 IP 地址。一种方便的方法是根据需要配置一个(例如 example.com),并为另一个设置 CNAME 记录(www.example.com IN CNAME example.com)。

要查看他们为您配置的内容,请尝试使用适当的工具(dig 或 nslookup)解析您的域名(您的根区域 -- example.com -- 以及您所谓的别名 --www.example.com-- ):

dig +trace www.example.com any
dig +trace example.com any

我不知道 nslookup 的等效功能(因为我使用 dig)

相关内容