aws ec2 e Django ALLOWED_HOSTS

2

Eu coloquei meu site usando o Django, no aws EC2, usando o Elastic Beanstalk. Eu configurei o ALLOWED_HOSTS para ['www.mydomain.fr', '.mydomain.fr'], conforme recommanded no site do Django.

Mas recebi muitos alertas como:

Cabeçalho HTTP_HOST inválido: 'ip-xxx-xx-xx-xxx.eu-west-1.compute.internal'. Pode ser necessário adicionar u'ip-xxx-xx-xx-xxx.eu-west-1.compute.internal 'a ALLOWED_HOSTS.

onde ip-xxx-xx-xx-xxx.eu-west-1.compute.internal é meu DNS privado?

É seguro adicioná-lo ao ALLOWED_HOSTS ou pode levar a um vazamento de segurança?

Muito obrigado

    
por trnsnt 30.10.2014 / 10:14

1 resposta

5

Sim, tudo bem. Mas se você encerrar a instância, perderá esse endereço. Então, você deve se esforçar para encontrar uma forma mais flexível / dinâmica de abordar ALLOWED_HOSTS. Você pode tentar definir o endereço da sua instância como uma variável de ambiente.

Ou, uma solução menos dinâmica: você também pode querer verificar o uso de um AWS Elastic IP. Embora isso possa não ser possível em uma sub-rede privada dentro de uma Nuvem privada virtual, embora não pareça ser esse o caso em sua configuração.

Aqui está outra opção para explorar ... embora você tenha que fazer alguma pesquisa sobre se isso é seguro ou não. Veja como buscar os metadados de uma instância de um IP da AWS nessa página da AWS ...

link

E, em seguida, aproveite o recurso da AWS sugerido acima em seu arquivo de configurações do Django assim ...

# 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
    
por 01.11.2014 / 11:46