Когда ec2 переключается между публичным DNS и публичным IP?

384
cryanbhu

У меня есть приложение, использующее Django, в конфиге Django есть список ALLOWED_HOSTS.

Приложение работало нормально с IP xxx.xxx.xxx.xxxв ALLOWED_HOSTSсписке.

Затем он бросил ошибку Джанго
"Invalid HTTP_HOST header: 'ec2-xx-xxx-xxx-xxx.region.compute.amazonaws.com'. You may need to add 'ec2-xx-xxx-xxx-xxx.region.compute.amazonaws.com' to ALLOWED_HOSTS."

Хотя я могу исправить это, добавив новую запись ALLOWED_HOSTS, я хотел бы знать, как / когда HTTP_HOSTзаголовок переключается между формами IP и DNS для AWS EC2.

Ссылка: Django ALLLOWED_HOSTS
https://docs.djangoproject.com/en/2.0/ref/settings/#allowed-hosts

1
С вашим примером это выглядит не так, как будто оно вообще изменилось в формате, а только содержание. Оба заголовка просто DNS-имена? Seth 5 лет назад 0
Как EC2 участвует в этом? Они предоставляют прокси / балансировщик нагрузки или что-то? grawity 5 лет назад 0
@Seth Django запрещает подключение формы DNS, но не запрещает подключение формы IP. Я подтвердил, что добавление формы DNS (ec2-xx-xxxx-xxx.amazonaws.com) к django ALLOWED_HOSTS решает проблему. Мне любопытно, почему изменение формы произошло, казалось бы, случайно cryanbhu 5 лет назад 0
@ Grawity Я не слишком уверен, попробую проверить. Я развернул в экземпляре EC2, но есть VPN и некоторые сетевые настройки, которые позволяют нам подключаться к нашим экземплярам VPC из сети компании. Не уверен, что это может повлиять cryanbhu 5 лет назад 0

1 ответ на вопрос

0
grawity

Host:Заголовок HTTP поставляется клиентом (например, веб - браузера или библиотеки API), и, как правило, точное название, что клиент сказал доступ - в основном, это взято из URL.

Так что если вы попытаетесь получить доступ http://ec2-xx.amazonaws.com/page.html, сервер получит:

GET /page.html HTTP/1.1 Host: ec2-xx.amazonaws.com 

Хотя, если в середине HTTP-запроса есть что-то - например, обратный прокси-сервер или HTTP-балансировщик нагрузки - он может переопределить заголовок Host: своим собственным.

забавно то, что в AWS я не изменил свои настройки и сетевые настройки. Поэтому я полагаю, что в бэкэнде AWS есть что-то, что изменило заголовок HTTP `Host:`, то есть "что-то посередине", как вы упомянули cryanbhu 5 лет назад 0

Похожие вопросы