为什么在路线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.com存储区设置为托pipe静态内容,而www.example.com存储区设置为永久redirect到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) 

它不会帮助减less一个额外的DNSparsing步骤(查找www.example.com.s3-website-eu-west-1.amazonaws.com )?

在这里使用CNAME有什么好处,考虑到Route 53有直接别名桶的能力吗?

要清楚,使用CNAME的作品,但我试图在学术上理解为什么他们不build议使用一个别名。

我认为,从理解DNS本身是如何工作的angular度来看,重要的是要注意,他们推荐用于example.com Aliaslogging没有这样的事情,完全是Route53function,他们在后台parsing指定名称并公开DNS中的标准Alogging(无论您在创build时select了哪种loggingtypes,但在他们的示例中都是Alogging)。

为什么他们select不推荐使用他们的www.example.com别名function也不是很明显。 如果你使用普通的静态logging,也许这只是简单的开销? 也许他们认为一个普通的静态logging更强大? 也许在www.example.com.s3-website-eu-west-1.amazonaws.com上还有其他的logging,理想情况下应该存在,但是他们觉得他们不会要求你一个接一个地加上别名(无论请求的loggingtypes如何, CNAME都会将该名称作为另一个的别名)?

相反,在这两种情况下使用CNAME不是一个选项,但是。 由于CNAMElogging不能与其他数据共存,所以永远不可能在区域顶点有一个CNAME ,因为那里至less有SOANSlogging。

我不知道亚马逊的东西,但在那里的文件,他们说的别名logging和CNAMElogging。 两者都是一样的。 CNAME将FQDN映射到另一个FQDN。 对我来说,这是一个别名的定义(同一事物的另一个名字)。 AAlogging仅映射到IPv4地址(参见RFC1035 )

请注意,www.example.com和example.com是2个不同的FQDN,并且没有理由将它们映射到相同的IP地址。 (例如,fdn.fr没有Alogging,也没有CNAME,而www.fdn.fr有CNAME),这个复杂的东西只有“如果你想提供你的根域的内容”才是必需的。 这样,example.com和www.example.com都必须映射到相同的IP地址。 一个方便的方法是根据需要configuration一个(例如example.com),并为另一个configuration一个CNAMElogging(www.example.com IN CNAME example.com)。

要查看他们为您configuration的内容,请尝试使用适当的工具(dig或nslookup)来parsing您的域名(包括根域 – example.com和所谓的别名–www.example.com–):

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

我不知道nslookup等价物(因为我使用挖掘)