我正在 EC2 上设置一个服务器,供那些在 URL 栏中看到 ec2-111-111-111-111.compute-1.amazonaws.com 的人使用。我知道这个问题可以通过使用 A 记录而不是 CNAME 来解决,但亚马逊的文档说要使用 CNAME。
如果我使用 A 记录会发生什么?我在网上看到一些教程说可以这样做,但我也需要我的网站可靠。
该网站仅使用一个实例运行,并且可能只使用一个实例运行,因此我认为多个实例相互通信并不重要。
答案1
简化版本:A 记录指向 IP 地址。CNAME 指向其他 A 记录。
您可以使用 A 记录,但为此您应该拥有一个高度可用的 EC2 实例 IP 地址。亚马逊将此产品称为“弹性 IP 地址”。
如果您将 CNAME 设置为 Amazon 管理的 A 记录,那么 Amazon 就可以控制间接层。例如,在服务器发生故障后,Amazon 可以使用它来将 A 记录更改为新的 IP 地址。这样 Amazon 就可以让服务重新运行,而您无需更改任何内容。
一般来说,最好使用 2 个 DNS 条目,即特定服务器的 A 记录和它提供的服务(如“www.”)的 CNAME。这样,硬件和服务之间就可以清晰区分,这在许多情况下使管理更加容易。
因此,如果您没有为“弹性 IP 地址”付费,那么您应该使用 CNAME 到亚马逊为您设置的 A 记录,即指向“ec2-111-111-111-111.compute-1.amazonaws.com”的“www.yourdomain.com”的 CNAME。
答案2
主机ec2-*.amazonaws.com
名解析为不同的 IP 地址取决于您是从 Internet 外部解析它们,还是从另一个 EC2 实例内部解析它们。
这意味着,如果您有两台 EC2 服务器(例如,一台数据库服务器和一台 Web 服务器),您的 Web 服务器将在内部 10.xxx IP 地址上看到数据库服务器,而从外部世界来看,您将在常规非私有 IP 地址上看到 Web 服务器。(当然,您并不希望数据库服务器在外部世界可见,但这只是一个方便的例子。)
如果您使用弹性 IP 地址,则您有一个已知的永久 IP 地址,并且应该可以使用 A 记录指向它。如果您不有一个弹性 IP(为什么不呢,它们是免费的),似乎你会想使用 CNAME 以防亚马逊更改你的 IP 地址。
但是如果您有多个服务器,我仍然会使用 CNAME,以便您获得神奇的内部/外部 IP 地址解析。
答案3
他们永远不会看到带有 CNAME 记录的 ec2-111-111-111-111.compute-1.amazonaws.com。如果访问您的 CNAMEed 域会重定向到 amazonaws.com URL,这不是因为它是 CNAME,而是您的应用程序或 Web 服务器正在执行的操作。
答案4
使用 CNAME 记录的原因是为了使得站点可以从 ec2 内部和外部访问。
以 ping 为例。如果您在外部 ping c2-111-111-111-111.compute-1.amazonaws.com,它将解析为 111.111.111.111,但在内部解析为 10.0.0.0/8 地址。但是,如果您 ping 111.111.111.111,它将在内部不可用。