Ich besitze einen Domain-Namen (nennen wir es example.org
), und haben einen CNAME von foo.example.org
zu einem AWS ELB FooBar-Load-Balancer-123456789.us-east-1.elb.amazonaws.com
eingerichtet. Dieser ELB hat eine Portkonfiguration von 443 (HTTPS, ACM Certificate <GUID>) forwarding to 80 (HTTP)
. Die einzige EC2-Instanz hinter dem ELB führt ein Docker-Image aus, das Apache an Port 80 freigibt.Relative Link (von https) gibt 301 Permanent Moved (zu http)
Wenn ich https://foo.example.org
in meinem Webbrowser öffne, funktioniert alles gut - die Seite lädt wie erwartet. Wenn ich zu https://foo.example.org/path
navigiere, wird es ebenfalls korrekt geladen. Wenn jedoch eine Seite <a href="path">
enthält, wird beim Klicken darauf, dass der Browser versucht, http://foo.example.org/path
zu laden, was (korrekt) gibt einen Fehler - "ERR_CONNECTION_REFUSED" in Chrome, "Verbindung nicht möglich" in Firefox.
die Netzwerkaktivität in Chome Dev-Tool überprüfen, sehe ich eine anfängliche Anforderung an https://foo.example.org/path
, die mit Location http://foo.example.org/path
in 301 Moved Permanently (from cache)
führt. Dies ist offensichtlich, was das Verhalten des Browsers verursacht - ist diese Fehlkonfiguration auf meinem Server (der glaubt, dass er auf HTTP - oder zumindest auf Port 80 - läuft), auf meinem ELB oder auf dem HTML der Website selbst?
Ich denke, ich könnte das umgehen, indem ich absolute Pfade benutze, aber da ich ein Docker-Bild lokal (Öffnen <IP Address>/path
in meinem Browser) vor dem Drücken von Änderungen testen möchte, klingt das nicht wie eine echte Lösung.
EDIT: Inspiriert von this, überprüfte ich Verhalten in einem neuen Chrome Incognito Mode-Fenster und in Chrome nach dem Löschen der Geschichte - das gleiche Verhalten in allen Fällen.