我想将域的根名设置为 CNAME 而不是通常的 A 记录。
这是我正在尝试做的一个完美的例子:
dig lrnskls.com
注意答案部分:
;; ANSWER SECTION:
lrnskls.com. 300 IN CNAME partner.adjix.com.
partner.adjix.com. 300 IN A 67.121.212.61
我尝试这样做的原因是为了能够通过 CNAME 别名将域的根名称指向 Amazon 的 S3。使用 A 记录不起作用,因为 S3 的 IP 每隔几分钟就会更改一次,以达到负载平衡的目的。
PS - 根据 RFC 1034 第 3.6.2 节,这似乎是合法的(请注意 USC-ISIC.ARPA 示例): http://www.faqs.org/rfcs/rfc1034.html
答案1
亚马逊意识到根域和 Elastic Load Balancer 的问题。他们推荐了以下解决方法:
- 将根域配置为将 mydomain.com 重定向到 www.mydomain.com (或您选择的任何其他子域)的服务
- 设置一条 CNAME 记录,将负载均衡器 DNS 名称映射到“www.mydomain.com”。
我不喜欢这个解决方案,但是它比“强制根域为 CNAME”解决方案更“干净”。
更新:亚马逊现在通过 ALIAS 记录(Route53 DNS 功能)为 ELB/S3 解决此问题。
答案2
不,这不合法。CNAME
不允许与其他记录共存,并且至少你需要SOA
在这里。
这个例子并不能证明相反的情况,因为它并不意味着那里有任何其他记录。
答案3
但是,我的 DNS 服务器不允许这样做;GoDaddy 的 DNS 管理器也不允许。因此,我希望按照 lrnskls.com 所有者的做法去做。有人知道他是怎么做到的吗?
您可能需要搜索 DNS 服务器。大多数 DNS 服务器不允许您这样做。我记得在 serverfault 上看到过另一个问题,有人发布了某人使用哪个 DNS 服务器在根目录设置 cname,但我找不到它。
也可以看看: -根 Cname - WHM? -将根域记录设置为 CNAME
答案4
如果您使用亚马逊的 Route 53 DNS 服务器,那么它将实现您的目标。
我很好奇:RFC 禁止在 apex 中使用 CNAME。这背后的技术原因是什么(假设它不是任意的)。