Почему не удается выполнить проверку работоспособности AWS ALB с правильной группой безопасности (EC2, Docker, nginx-proxy, ACM)?
У меня возникли проблемы с выполнением всех проверок работоспособности балансировщика нагрузки приложений AWS, когда группа безопасности моего экземпляра EC2 настроена правильно. Сайт работает, когда я открываю порт 443
для всего мира (0.0.0.0/0)
, но не работает, когда я ограничиваю его группой безопасности лаборатории, даже если проверка источника / назначения отключена.
Конфигурация экземпляра EC2:
- Запускается Docker Compose
nginx-proxy
,acme-companion
,Django (web)
, и другие сервисы. - nginx-прокси сопоставляется с портами
80
и443
на хосте. - Для моего домена задан параметр VIRTUAL_HOST.
- Для параметра VIRTUAL_PORT правильно задано значение
8000
- Группа безопасности экземпляра EC2:
- Правильная настройка (ошибка): Разрешен вход по протоколу HTTPS (порт 443) только из группы безопасности лаборатории (например, sg-xxxxxxxxx).
- Временное решение (рабочее): Разрешает входящий HTTPS (порт 443) с 0.0.0.0/0.
- Проверка источника/назначения отключена на экземпляре EC2.
Поток запросов:
Запрос клиента -> Маршрут 53 -> Балансировщик нагрузки приложения (HTTPS:443) -> AWS WAF -> Целевая группа ALB (HTTPS:443 ) -> Экземпляр EC2 (порт 443, nginx-прокси) -> Docker Контейнер (порт 8000, Django)
Конфигурация ALB:
- Прослушиватель на порту 80 (HTTP) перенаправляет на HTTPS (443).
- Прослушиватель на порту 443 (HTTPS) перенаправляет данные целевой группе.
- Группа безопасности ALB: Разрешает вход на порты 80 и 443 из 0.0.0.0/0.
- Проверка работоспособности целевой группы:
- Протокол: HTTPS
- Порт: 443
- Путь: /api/v1/health/ (У меня есть эта конечная точка в моем приложении django, но это то, что я получаю в своих логах nginx-proxy
"/etc/nginx/html/api/v1/health/index.html" is not found (2: No such file or directory), client: 172.xx.x.xxx, server: , request: "GET /api/v1/health/ HTTP/1.1" host: "172.xx.x.xxx"
)
Почему ВСЕ проверки работоспособности завершаются неудачей, когда группа безопасности экземпляра EC2 корректно разрешает трафик только из группы безопасности ALB, даже если проверка источника/назначения отключена?
у меня это сработало: Попробуйте перенаправить путь проверки работоспособности в корневой каталог вашего проекта , а затем перезапустить nginx внутри вашего контейнера
Я решил эту проблему, удалив эту переменную окружения из моего веб-сервиса Django LETSENCRYPT_HOST
.