Amazon web services 当ELB连接到ec2时,HTTP ping上的运行状况检查失败,但TCP ping成功
我正在为一个简单的应用程序构建后端。它与AWS EC2中的nginx-uwsgi-djangorest api一起使用。 因为我需要使用https发送请求,所以我将elb负载平衡器添加到我的ec2实例中,该实例正在将https转发到HTTP。 ELB不得不对模型进行健康检查。起初,我使用“80:HTTP/health”ping进行健康检查,并且可以在/health中看到结果 但运行状况检查程序总是失败,nginx和uwsgi日志上显示“GET/health/HTTP/1.1”400 37“-“ELB HealthChecker/1.0” ec2实例的安全组 类型-协议-端口范围-源 HTTP-TCP-80-0.0.0.0/0 HTTP-TCP-80-::/0 SSH-TCP-22-0.0.0.0/0 负载平衡器的安全组 HTTP-TCP-80-0.0.0.0/0 HTTPS-TCP-443-0.0.0/0 nginx的配置文件Amazon web services 当ELB连接到ec2时,HTTP ping上的运行状况检查失败,但TCP ping成功,amazon-web-services,nginx,amazon-ec2,uwsgi,aws-load-balancer,Amazon Web Services,Nginx,Amazon Ec2,Uwsgi,Aws Load Balancer,我正在为一个简单的应用程序构建后端。它与AWS EC2中的nginx-uwsgi-djangorest api一起使用。 因为我需要使用https发送请求,所以我将elb负载平衡器添加到我的ec2实例中,该实例正在将https转发到HTTP。 ELB不得不对模型进行健康检查。起初,我使用“80:HTTP/health”ping进行健康检查,并且可以在/health中看到结果 但运行状况检查程序总是失败,nginx和uwsgi日志上显示“GET/health/HTTP/1.1”400 37“-“E
upstream django {
server unix:///tmp/mysocket.sock; # for a file socket
}
server {
listen 80;
server_name *.compute.amazonaws.com *.elb.amazonaws.com;
charset utf-8;
client_max_body_size 128M;
location / {
uwsgi_pass django;
include uwsgi_params;
}
}
我几个小时都没发现什么问题,当我将健康检查ping端口和协议更改为HTTP:80/health到80:TCP时,它突然开始工作
有人能给我解释一下那个健康检查员是干什么的吗?
我无法理解80:TCP healthchecker和http healthchecker之间的区别。这个没有应该到达的/health/url
我也已经有了SSL认证
- 通过http ping,即使我将其添加到nginx服务器conf文件中,healthcheck也会由400响应返回
TCP健康检查只是检查是否可以建立TCP连接,而HTTP健康检查则是检查响应中的特定HTTP状态代码。您的健康检查URL是否没有返回
200
响应?如果它返回400
响应,这是一个错误代码,将导致健康检查失败…是的,我知道。。。但是除了将ping协议和端口更改为80:TCP之外,无法修复它
location /health {
return 200;
}