我在EC2实例上部署了一个简单的网站,并创建了一个弹性负载均衡器,将流量路由到此EC2实例 .
我还在我的DNS注册商处创建了一个CNAME记录,将我的域(www.example.com)指向负载均衡器DNS名称(load-balancer-1234567890.us-east-1.elb.amazonaws.com) .
我可以通过3种不同的方式在浏览器中成功访问我的网站:
-
EC2实例公共IP(例如:54.89.99.99)
-
ELB公共DNS名称(例如:load-balancer-1234567890.us-east-1.elb.amazonaws.com)
-
我的域名DNS(例如:www.example.com)
但是,出于安全原因,我希望只能从负载均衡器在端口80上访问我的EC2实例 .
所以,我更改了EC2实例的安全组:
-
删除了允许来自所有源的端口80上的流量的规则(0.0.0.0/0)
-
添加了一条规则,允许来自我的VPC的端口80上的流量(172.31.0.0/16)
-
添加了一条规则,允许来自ELB安全组的端口80上的流量(sg-xxxxxxxx)
之后,我仍然可以从ELB DNS名称访问我的网站,但现在我无法再访问我的域名(www.example.com) . 我收到错误:ERR_CONNECTION_TIMED_OUT .
怎么了?
2 回答
这似乎是您的计算机或DNS服务器中的DNS缓存问题 .
要清除计算机中的缓存,请使用
ipconfig /flushdns
刷新DNS如果问题仍然存在,请尝试使用traceroute www.example.com(或在Windows中跟踪www.example.com)查看它是否到达ELB . 如果源IP与当前DNS配置不同,
可能是由于配置错误(仔细检查)
如果未传播最新的DNS修改(如果其指向先前的配置),则等待一段时间,直到DNS服务器根据TTL值清除缓存 .
创建负载均衡器时,选择负载均衡器所在的AZ . 这意味着您的负载均衡器位于您的VPC内,而不在其外部(这是正常的和预期的) .
由于您的安全组允许来自您的VPC内的流量(它复制ELB安全组,因为两者都允许流量),因此安全组设置或您的Load Balancer配置错误有问题 . 还要仔细检查负载均衡器安全组设置 .