假设我有一个域名,foo.com,我有一系列页面,如foo.com/123和foo.com/456等.我想使用域名并提供没有www前缀的链接.这些页面还将包含指向其他页面(以及彼此)的链接,而不包含www前缀.
我使用Azure来托管我们的站点,该站点与EC2相同,因为域不能具有A记录,因为服务器环境是虚拟化的.因此,Microsoft和Amazon都会告诉您使用CNAME记录将您的域指向他们管理的A记录.在Azure的情况下,我的CNAME记录指向cloudapp.net记录(由microsoft管理):
foo.com CNAME foo.cloudapp.net
其中foo.cloudapp.net是我在Azure上设置的域名.
我遇到各种各样的问题,如电子邮件传递和各种人无法加载网站. 2个不同的名称服务提供商和我的托管服务商告诉我,它违反了RFC以使根域成为CNAME条目,这就是为什么我的问题是零星的.
我很惊讶地听到这一点,因为你看到这些天在EC2或Azure上托管了很多网站,并且不使用www前缀.这些网站如何设置,以便他们可以只使用foo.com(没有www前缀)?
更新:当我询问有关EC2或Azure的问题时,我特意在Azure上查找信息.
解决方法
在EC2上运行的网站可以通过区域顶点或裸域提供,例如带有A记录的“example.com”.服务器在虚拟机中运行的事实对此没有影响.许多网站都这样做,包括我的大部分.
如果您使用的是需要CNAME的服务,例如亚马逊的Elastic Load Balancer,则您无法使用区域顶点或裸域(如“example.com”)指向它,因为CNAME不能与裸域一起使用.这是对DNS规范的限制,而不是与云或虚拟化实现相关的内容.
只要您使用Amazon的Route53 DNS服务托管该区域的DNS,您仍然可以将Amazon的Elastic Load Balancer与区域顶点或裸域(如“example.com”)一起使用.亚马逊的做法是动态制作A记录图,以便CNAME返回的结果符合DNS规范,同时提供ELB需要提供的灵活性和功能.
我对Azure一无所知.您在尝试使用它时违反了DNS规范.