Мне нужен путь проверки работоспособности для настройки ALB, который указывает на сервер с докер-контейнером Nginx. У меня нет доступа к серверу EC2, чтобы добавить туда файл. Я могу просто добавить что-нибудь в Docker-Container
Я пробовал следующее решение, но оно не работает для меня, потому что у меня есть другой блок в моем файле конфигурации, который, я думаю, предотвращает это.
Решение Nginx для AWS Amazon ELB Health Checks - возврат 200 без IF
Мой файл конфигурации выглядит так:
server
{
listen 443 ssl http2;
server_name server-test.com;
access_log /var/log/nginx/nginx.access.log;
error_log /var/log/nginx/nginx.error.log;
ssl on;
ssl_certificate /etc/nginx/ssl/cert.pem;
ssl_certificate_key /etc/nginx/ssl/server.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
ssl_session_timeout 1d;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_session_tickets off;
location /
{
proxy_pass http://server-test.io:5015/;
proxy_redirect off;
##proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
}
...
...
...
# Health check url
server {
location /elb-status {
access_log off;
return 200 'A-OK!';
add_header Content-Type text/plain;
}
}
# Redirect non-existing domains to 404
server {
server_name _;
listen 80 default_server;
return 404;
}
server {
server_name _;
listen 443 ssl;
ssl_certificate /etc/nginx/ssl/cert.pem;
ssl_certificate_key /etc/nginx/ssl/server.key;
return 404;
}
Когда я открываю сервер с помощью path / elb-status, он дает мне 404 Not Found. А также статус сервера под LoadBalancer ненормальный. Я думаю, это из-за блока: «Перенаправить несуществующие домены», но мне тоже нужен этот блок.
Любая помощь будет оценена.
Отредактировано на основе ответа Энди:
Контейнер Nginx использует оба порта: 80 и 443, я настроил целевую группу для серверов, в которую входит контейнер докеров Nginx, на основе этих портов, но проверка работоспособности серверов все же неработоспособна.
Что-то мне здесь не хватает?
Как насчет запуска server
блок, содержащий location /elb-status
на другом порту?
При создании ALB есть Advanced health check settings
падать. В этих настройках вы можете переопределить порт проверки работоспособности. Вы можете установить порт примерно так: 8080
а потом твой server
становится:
server {
listen 8080;
location /elb-status {
access_log off;
return 200 'A-OK!';
add_header Content-Type text/plain;
}
}
В этой настройке нет необходимости в маршрутизации на основе виртуального хоста для проверки работоспособности. Порт 8080
будет посвящен только проверке работоспособности.
Не забудьте открыть соответствующий порт в своей группе безопасности между экземплярами ALB и EC2, если вы решите пойти по этому пути.