Wann wechselt ec2 zwischen öffentlichem DNS und öffentlicher IP?

519
cryanbhu

Ich habe eine Anwendung, die Django verwendet, in Django config gibt es eine Liste von ALLOWED_HOSTS.

Die Anwendung funktionierte gut mit der IP xxx.xxx.xxx.xxxin der ALLOWED_HOSTSListe.

Es war dann der Django-Fehler
"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."

Obwohl ich dies durch Hinzufügen eines neuen Eintrags beheben kann ALLOWED_HOSTS, würde ich gerne wissen, wie und wann der HTTP_HOSTHeader zwischen IP- und DNS-Formularen für AWS EC2 wechselt.

Ref: Django ALLLOWED_HOSTS
https://docs.djangoproject.com/de/2.0/ref/settings/#allowed-hosts

1
Bei Ihrem Beispiel sieht es nicht so aus, als hätte sich das Format verändert, sondern nur der Inhalt. Beide Header sind nur DNS-Namen? Seth vor 6 Jahren 0
Wie ist EC2 daran beteiligt? Bieten sie einen Proxy / Load Balancer oder etwas? grawity vor 6 Jahren 0
@Seth Django verhindert, dass das DNS-Formular eine Verbindung herstellt, das IP-Formular jedoch nicht. Ich habe überprüft, dass das Hinzufügen des DNS-Formulars (ec2-xx-xxxx-xxx.amazonaws.com) zum django ALLOWED_HOSTS das Problem behebt. Ich bin neugierig, warum die Veränderung der Form scheinbar zufällig erfolgte cryanbhu vor 6 Jahren 0
@grawityIch bin nicht so sicher, ich werde versuchen zu prüfen. Ich habe in einer EC2-Instanz implementiert, aber es gibt ein VPN und einige Netzwerkeinstellungen, die es uns ermöglichen, aus dem Firmennetzwerk in unsere VPC-Instanzen zu wechseln. Nicht sicher, ob dies Auswirkungen haben könnte cryanbhu vor 6 Jahren 0

1 Antwort auf die Frage

0
grawity

Der Host:HTTP - Header wird vom Client (zB Web - Browser oder API - Bibliothek) geliefert und ist in der Regel der genaue Name, dass der Client wurde gesagt, dem Zugang - im Grunde, es aus der URL genommen wird .

Wenn Sie also versuchen, auf http://ec2-xx.amazonaws.com/page.htmlden Server zuzugreifen, erhält der Server:

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

Befindet sich jedoch mitten in der HTTP-Anforderung etwas, z. B. ein Reverse-Proxy oder ein HTTP-Load-Balancer, kann er den Host: -Header mit einem eigenen überschreiben.

Eine lustige Sache ist, dass ich nichts von meinem Setup oder Netzwerk in AWS geändert habe. Ich nehme an, es gibt etwas im AWS-Backend, das den HTTP-Header "Host:" geändert hat, dh "etwas in der Mitte", wie Sie erwähnt haben cryanbhu vor 6 Jahren 0