Answers:
根据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
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
A
记录了,该怎么办?
bar.com
。(名称必须与您要重定向的域的名称相同,这样才能起作用!)bar.com
S3存储桶中,转到Properties
> Static Website Hosting
,选择Redirect all requests to another host name
并foo.com
在文本框中输入。Hosted Zone
for中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。
tldr; 您必须传递FQDN作为ResourceRecordSet名称。
使用此语句c#片段时,我遇到了同样的问题:
private static void RegisterHostWithDns(IAmazonRoute53 ec2,SynoviaImage image)
{
var changeBatch = new ChangeBatch();
var rRs = new ResourceRecordSet(image.Name, RRType.CNAME) {TTL=60,ResourceRecords = new List<ResourceRecord>() { new ResourceRecord(image.PublicDns)} };
var change = new Change(ChangeAction.UPSERT, rRs);
changeBatch.Changes.Add(change);
var request = new ChangeResourceRecordSetsRequest(ConfigurationManager.AppSettings["DnsZoneId"], changeBatch);
var response = ec2.ChangeResourceRecordSets(request);
Console.WriteLine("Updated CNAME For {0} setting {1}",image.Name,image.PublicDns);
}
在这种情况下,image.Name ==“ Listener”
一旦我将其更改为:
private static void RegisterHostWithDns(IAmazonRoute53 ec2,SynoviaImage image)
{
var changeBatch = new ChangeBatch();
var rRs = new ResourceRecordSet(string.Format("{0}.{1}",image.Name, "testing.foo.bar.com"), RRType.CNAME) {TTL=60,ResourceRecords = new List<ResourceRecord>() { new ResourceRecord(image.PublicDns)} };
var change = new Change(ChangeAction.UPSERT, rRs);
changeBatch.Changes.Add(change);
var request = new ChangeResourceRecordSetsRequest(ConfigurationManager.AppSettings["DnsZoneId"], changeBatch);
var response = ec2.ChangeResourceRecordSets(request);
Console.WriteLine("Updated CNAME For {0} setting {1}",image.Name,image.PublicDns);
}
现在传递的值是:“ Listener.fully.qualified.com”
现在可以使用了。