У меня есть Django webapp. Он работает внутри Docker на эластичном бобовом стебле.Проверка работоспособности URL-адресов Django и Elastic Beanstalk
Я хотел бы указать health check URL для более продвинутой проверки работоспособности, чем «может ELB установить TCP-соединение».
Полностью разумно, ELB делает это, подключаясь к экземпляру через HTTP, используя имя хоста экземпляра (например, ec2-127-0-0-1.compute-1.amazonaws.com
) в качестве заголовка Host
.
Django имеет ALLOWED_HOSTS
, который проверяет заголовок входящих сообщений Host
. Я установил это для внешнего домена моего приложения через переменную среды.
Неудивительно и полностью разумно, поэтому Django отвергает проверки работоспособности URL-адресов ELB из-за отсутствия соответствия Host
.
Мы не хотим отключать ALLOWED_HOSTS
, потому что мы хотим быть в состоянии доверять get_host()
.
Решения до сих пор кажутся:
- Каким-то образом убедить Django не заботиться о
ALLOWED_HOSTS
для определенных конкретных путей (т.е. проверка состояния URL) - ли что-то в стиле фанк, как вызов EC2 API информации о чтобы получить полное доменное имя хоста и добавить его в
ALLOWED_HOSTS
Ни один из них не кажется особенно приятным. Может ли кто-нибудь рекомендовать лучшее/существующее решение?
(Во избежание сомнений, я считаю, эта проблема должна быть идентична сценарию «Disabled ALLOWED_HOSTS
, противостоя HTTPD, который фильтрует на хосте» - Я хочу, чтобы проверить здоровье ударить Джанго, не противостоя HTTPD)
https://dryan.com/articles/elb-django-allowed-hosts/ – TheGeorgeous
@TheGeorgeous Извините за то, что я не был явным раньше - это именно то, что я был после; хотите опубликовать его в качестве ответа, чтобы я мог его принять? (Надеюсь, вы не возражаете, если я не услышу от вас через месяц, я сделаю это, так что это станет более заметным для всех, кто приземляется здесь!) –