Назад | Перейти на главную страницу

aws ec2 и Django ALLOWED_HOSTS

Я создал свой веб-сайт, используя Django, на aws EC2, используя Elastic Beanstalk. Я установил для ALLOWED_HOSTS значение ['www.mydomain.fr', '.mydomain.fr'], как рекомендовано на веб-сайте Django.

Но я получил много предупреждений вроде:

Недействительный заголовок HTTP_HOST: 'ip-xxx-xx-xx-xxx.eu-west-1.compute.internal'. Возможно, вам потребуется добавить u'ip-xxx-xx-xx-xxx.eu-west-1.compute.internal 'в ALLOWED_HOSTS.

где ip-xxx-xx-xx-xxx.eu-west-1.compute.internal - это мой частный DNS?

Безопасно ли добавлять его в ALLOWED_HOSTS или это может привести к утечке безопасности?

большое спасибо

Да все нормально. Но если вы отключите экземпляр, вы потеряете этот адрес. Итак: вам следует попытаться найти более гибкий / динамический способ обращения к ALLOWED_HOSTS. Вы можете попробовать установить адрес вашего экземпляра в качестве переменной среды.

Или менее динамичное решение: вы также можете проверить, используя AWS Elastic IP. Хотя это может быть невозможно в частной подсети в виртуальном частном облаке, хотя это не похоже на вашу настройку.

Вот еще один вариант для изучения ... хотя вам придется провести некоторое исследование, чтобы узнать, безопасно ли это. Узнайте, как получить метаданные экземпляра с IP-адреса AWS, на этой странице AWS ...

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AESDG-chapter-instancedata.html

А затем используйте ресурс AWS, предложенный выше, в файле настроек Django, например, так ...

# DJANGO PRODUCTION SETTINGS

import requests
from .base import *

########## ALLOWED_HOSTS
from requests.exceptions import ConnectionError

url = "http://169.254.169.254/latest/meta-data/public-ipv4"
try:
    r = requests.get(url)
    instance_ip = r.text
    ALLOWED_HOSTS += [instance_ip]
except ConnectionError:
    error_msg = "You can only run production settings on an AWS EC2 instance"
    raise ImproperlyConfigured(error_msg)
########## END ALLOWED_HOSTS