Я создавал бэкэнд для простого приложения.Это было с nginx-uwsgi-djangorest-api в AWS EC2.Поскольку мне нужно было отправлять запросы с помощью https, я добавил балансировщик нагрузки elb в мой экземпляр ec2, который пересылает HTTPS в HTTP.ELB должен был проверить модель на здоровье.Сначала у меня был пинг «80: HTTP / health» для проверки работоспособности, и я смог увидеть результат в / health
, но при проверке работоспособности всегда происходил сбой, при этом "GET /health/ HTTP/1.1" 400 37 "-" "ELB-HealthChecker/1.0"
показывалось на nginx и uwsgilog.
группа безопасности для экземпляра 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/0
файл конфигурации для nginx
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-пинг, даже когда я добавил это вФайл конфигурации сервера nginx, проверка работоспособности была возвращена в ответе 400.
location /health {
return 200;
}