我错误地在 stackoverlow 上问了这个问题,然而,在这里可能更有意义。
我的应用程序在亚马逊上,我正在使用他们的 EC2 负载均衡器。亚马逊在其网站上声明:
DNS Name: XXXXXXXX.us-east-1.elb.amazonaws.com
Note: Because the set of IP addresses associated with a LoadBalancer can change over time,
you should never create an "A" record with any specific IP address. If you want to use a friendly
DNS name for your LoadBalancer instead of the name generated by the Elastic Load Balancing
service, you should create a CNAME record for the LoadBalancer DNS name. For more information
about CNAME records, see the CNAME Record Wikipedia article.
我www
在 DNS 中创建了一个 CNAME 记录主机,映射到上面的负载均衡器。 http://www.mydomain.com
转发到正确的应用服务器。(酷)
但是,我注意到当我输入mydomain.com
而不是 时,http://www.mydomain.com
它会转到默认的 A 记录,该记录映射到不同的 IP 而不是负载均衡器。我该如何解决这个问题?我希望 www.mydomain.com 和 mydomain.com 都转到同一个负载均衡器。我想我需要在 DNS 中执行此操作,对吗?
注意:我通过 ping 两个地址验证了上述内容。
答案1
我希望 www.mydomain.com 和 mydomain.com 都进入同一个负载均衡器。
你不能。这是一个已知的设计限制,它源于 Amazon Elastic Load Balancer (ELB) 的实施方式和 DNS 的长期设计选择的结合。
您无法为裸二级域名创建 CNAME 条目。即yourdomain.com
必须是直接指向 IP 地址的 A 记录。
但是,亚马逊的 ELB 依赖于亚马逊创建的自定义 DNS 和 EC2 平台,这要求您的 DNS 条目是指向您的亚马逊 ELB 域名(即XXXXXXXX.us-east-1.elb.amazonaws.com
)的 CNAME。
综上所述,这基本上意味着您只能在 ELB 中使用三级域名,例如www.yourdomain.com
或blog.yourdomain.com
。这些必须是 CNAMES,指向您的 ELB 实例。
因此,对于裸二级域名yourdomain.com
(@)本身,您必须:
- 做出 A 记录
- 将此 A 记录指向 HTTP 重定向器
- 让重定向器发出临时或永久的 HTTP 重定向更改为您想要使用的完全限定域名。
几乎任何像样的域名注册商或 DNS 主机都应该有免费或非常便宜的方式来实现这一点。您也可以自己做,通过运行带有 Web 服务器的 EC2 实例,但何必呢……
我不知道 GoDaddy 的用户界面是什么样的,因为我自己从来没有用过。但 Gandi 有免费的 HTTP 重定向功能,称为“Web Forwarding”,而 GoDaddy 似乎有一个“站点重定向管理器“。
在现实生活中,这对最终用户来说并不是一个问题。 经过短暂的一段时间,所有搜索引擎索引和所有最终用户书签都将指向www.yoursite.com
,因此通过 进入并被重定向的用户数量yoursite.com
将非常少。 对于这些用户来说,这是一个短暂的延迟(可能 100-200 毫秒),并且应该只会发生一次。