我正在使用AWS上的所有基础架构,我需要:
mydomain.com A ALIAS {S3-bucket- > } s3-website-eu-west-1.amazonaws.com.
www.mydomain.com CNAME mydomain.com
-> website on Amazon S3
*.mydomain.com CNAME {beanstalk} -> myserver-app.elasticbeanstalk.com
-> all other subdomains redirect to the Amazon Beanstalk app
*.mydomain.com MX ->
10 XXYY.in1.mandrillapp.com.
20 XXYY.in2.mandrillapp.com.
-> all emails goes to mandrillapp.
怎么可能这样做?
因为它的编写因为CNAME与MX通配符不起作用。
我无法使用所有名称,因为子域名将动态生成。
非常感谢!!
大卫
答案 0 :(得分:1)
您遇到的问题是rules of DNS的问题,该问题禁止存在另一条记录的CNAME记录。
如果节点上存在CNAME RR,则不应该有其他数据 当下;这可以确保规范名称及其别名的数据 不可能是不同的。此规则还可确保缓存的CNAME可以 使用时不使用权威服务器检查其他RR类型。
您是否有特殊原因要使用通配符MX记录?我看不到它提供好处的任何情况,但很多地方它会是一个非常糟糕的主意! (特别是它使网络上的任何主机成为发送垃圾邮件的可行目标,因为任何可以解析到该域的主机都有权发送垃圾邮件。
如果您明确命名您的MX记录,您可以拥有CNAME通配符(实际上我可能需要检查它!但我确实相信)
答案 1 :(得分:1)
如您所见,您不能在DNS层次结构的同一级别拥有CNAME
和任何其他类型的记录。您在裸域和www
中使用的Route 53 Alias records是为了解决DNS设计中的此限制而创建的,并且没有相同的不兼容问题...但是目标Alias
记录只能是以下四种情况之一:CloudFront分配,Elastic Load Balancer,与A记录中的主机名同名的S3存储桶,或其他记录输入相同的托管区域。
最后两个对你没有帮助,但前两个中的任何一个都可以。
如果您的beanstalk应用程序已经有ELB,您可以在EC2控制台的Load Balancers下找到该名称,并且您应该能够将其用作*
通配符A记录别名的别名目标为您的域名。或者,您可以为此目的向Beanstalk应用程序添加负载均衡器。
或者,您可以创建CloudFront分配,并将myapp.elasticbeanstalk.com配置为分发的“自定义源”服务器。配置CloudFront在*.example.com
的分发中调用"alternate domain name (CNAME)"的内容 - 顺便说一句,忽略CloudFront控制台将其称为“CNAME”的事实。它们也可以用作别名目标。将分发配置为forward the incoming Host:
header到原点,以及您要转发的任何其他标题。然后,您应该能够创建通配符Alias A记录,指向CloudFront分配,它将请求转发到beanstalk应用程序。