具有DNS名称foo.com的CNAME类型的RRSet.区域bar.com中的顶点不允许

fre*_*ley 89 dns amazon-web-services amazon-route53

我拥有foo.combar.com.我在Route53管理两个.foo.com托管我的网站,我想引导流量bar.comfoo.com.我试图设置一个指向的CNAME记录,但我收到了错误消息:bar.comfoo.com

RRSet of type CNAME with DNS name foo.com. is not permitted at apex in zone bar.com.
Run Code Online (Sandbox Code Playgroud)

为什么这不起作用,我该怎么办呢?

Ioa*_*ucu 77

根据RFC1912第2.4节:

 A CNAME record is not allowed to coexist with any other data.  In
 other words, if suzy.podunk.xx is an alias for sue.podunk.xx, you
 can't also have an MX record for suzy.podunk.edu, or an A record, or
 even a TXT record.  Especially do not try to combine CNAMEs and NS 
 records like this!:

           podunk.xx.      IN      NS      ns1
                           IN      NS      ns2
                           IN      CNAME   mary
           mary            IN      A
Run Code Online (Sandbox Code Playgroud)

RFC非常有意义,因为名称服务器不知道它是否需要跟随CNAME或者回答CNAME重叠的实际记录.bar.com是一个区域,因此它隐含地具有该bar.com名称的SOA记录.您不能同时拥有SOA记录和具有相同名称的CNAME.

但是,鉴于SOA记录通常仅用于区域维护,因此您希望在区域顶点提供CNAME的这些情况非常常见.即使RFC禁止它,许多工程师也会喜欢这样的行为:"遵循CNAME,除非查询明确要求提供SOA记录".这就是Route 53提供的原因alias records.这些是Route 53特定功能,可提供您所需的确切功能.看看http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/CreatingAliasRRSets.html

  • 在Route 53中创建记录以便将域顶点定向到经典ELB时,您可以为A记录而不是CNAME创建别名.详细说明可在此处找到:http://docs.aws.amazon.com/elasticloadbalancing/latest/classic/using-domain-names-with-elb.html (6认同)

小智 54

  1. 创建一个名为的S3 Bucket bar.com.(该名称必须与您要重定向的域名相同才能使其正常工作!)
  2. bar.comS3 Bucket中,转到Properties> Static Website Hosting,选择Redirect all requests to another host namefoo.com在文本框中输入.
  3. 回到Route 53,在你的Hosted Zonefor中bar.com,点击Create Record Set.选择A - IPv4 address类型.点击Yes查看Alias.单击文本框Alias Target.bar.com应列在下面-- S3 Website Endpoints --.保存记录.等几分钟,你应该有一个重定向设置,将请求从bar.com重定向到foo.com.

您可以使用相同的方法将裸域重定向到子域(如www).我在www.foo.com必须是CNAME的情况下使用它,因此我使用相同的方法从foo.com重定向到www.foo.com.如果foo.com是A记录,您可以使用此技术从www.foo.com重定向到foo.com.

注意:此方法将以完整路径转发.即http://bar.com/test将转发至http://foo.com/test.

  • 我发现当 AWS Route 53 显示可供链接的可用存储桶名称时,我的 s3 存储桶名称未加载。我在某处读到,您将其创建为哪个 AWS 控制台用户以及可能在哪个区域可能很重要... (2认同)

Jon*_*han 7

在Route53上,您需要创建A记录而不是CNAME记录,并在该记录下创建别名。

来自@ewalshe对Alexandru Cucu的回答的评论,如果您是来这里尝试使用自定义域名设置API Gateway并具有Cloudfront发行网址的。