使用Nginx / Tomcat进行EC2 / ELB运行状况检查失败

时间:2017-10-24 06:13:32

标签: tomcat nginx amazon-ec2 amazon-elb

我在ELB后面有一个Ec2 / RHEL7。 EC2在8080上监听端口80和Tomcat的Nginx.ELB Healthcheck如下

Ping Target 
HTTP:80/index.html
Timeout 5 seconds
Interval    30 seconds
Unhealthy threshold 10
Healthy threshold   3

ELB运行状况检查一直失败,ec2停止运行

我更新了ngix conf(在网站可用和网站启用下) Nginx和tomcat服务都已启动并正在运行

我也可以卷曲以下内容(使用localhost和主机名通过,但使用IP地址失败)

[ec2-user@ip-10-190-180-30 ~]$ curl -I  localhost:80/index.html
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Tue, 24 Oct 2017 06:05:25 GMT
Content-Type: text/html
Content-Length: 178
Connection: keep-alive
Location: https://localhost/index.html
Strict-Transport-Security: "max-age=31536000; includeSubdomains;"
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: "1; mode=block"

curl -I  10.160.xx.xx:80/index.html
HTTP/1.1 503 Service Unavailable
Server: squid/3.5.20
Mime-Version: 1.0
Date: Tue, 24 Oct 2017 06:07:50 GMT
Content-Type: text/html;charset=utf-8
Content-Length: 3659
X-Squid-Error: ERR_CONNECT_FAIL 110
X-Cache: MISS from izss-proxy-a2
X-Cache-Lookup: MISS from izss-proxy-a2:3128
Via: 1.1 izss-proxy-a2 (squid/3.5.20)
Connection: keep-alive

ELB健康检查失败。不知道我错过了什么。

2 个答案:

答案 0 :(得分:0)

听起来nginx只在localhost上侦听,检查一下你可以做到

$ ss -l -t | grep http

这将列出所有名为http的内容的任何进程正在侦听的TCP端口。

它应该显示如下:

LISTEN     0      128        *:http-alt                 *:*                    
LISTEN     0      128        *:http                     *:*

如果*前面没有:http127.0.0.1而不是listen这是您的问题,您应该在*:80选项后检查您的nginx配置并更改它到{{1}},如果找不到,请添加它。

答案 1 :(得分:0)

检查ec2安全组并确保ELB可以访问端口80。

最佳做法是采用ELB安全组并在ec2安全组上创建入站规则,以允许ELB安全组访问ec2上的端口80。