无法访问弹性负载均衡器后面的AWS ec2实例

我一直在关注lynda.com的AWS基本培训,并且已经成功设置了一个EC2实例,但是当我尝试把它放在负载均衡器的后面时,我无法通过ELB的公共DNS访问它。

在AWS Load Balancer控制台上,它表示我的实例的状态是OutOfService。 根据教程,我为负载平衡器设置了健康检查,path为/heartbeat.php

我也有两个安全组织 。 第一个名为Load Balancer – Prod允许来自任何人的端口80上的HTTP通信。 我的负载平衡器属于这个安全组。 此外,我有一个名为Web Tier – Prod的安全组,它只允许来自Load Balancer – Prod安全组的端口80上的HTTPstream量,以及我自己的IP和MYSQLstream量的Web Tier – Prod安全组。

我可以使用自己的公共DNS访问实例,并且可以通过SSH访问它,但是我无法通过负载均衡器public DNS访问它。

当我ssh进入它和劈NGINX访问日志,我看到这个logging多次。

 172.??.??.?? - - [26/Aug/2015:16:43:46 +0000] "GET /heartbeat.php HTTP/1.1" 401 203 "-" "ELB-HealthChecker/1.0" 

我应该看到一个200状态代码,而不是401 203我猜。 我尝试改变/var/www/到777作为一个testingrecursion权限,但没有任何区别。

如果状态检查返回401,则AWS将该实例视为不健康,并将其从ELB中取出。 既然你没有健康的事例,ELB就会倒闭。

请注意,AWS通过IP访问/heartbeat.php而不是通过DNS名称 。 使用curl -I http://<your instance IP>/heartbeat.php检查响应,并调整您的服务器configuration,如果它没有被默认的虚拟主机提供服务。