it-swarm.com.de

Leiten Sie den gesamten HTTP-Verkehr zu HTTPS um, wenn Sie den HTTP (S) Load Balancer in Google Compute Engine verwenden

Ich habe HTTP/HTTPS Load Balancing in Google Compute Engine mit zwei globalen Weiterleitungsregeln (HTTP und HTTPS) eingerichtet. Jede Regel verweist auf einen Back-End-Dienst mit einem HTTP-Protokoll.

Ich möchte, dass alle Anfragen an http://* An https://* Gehen.

Da der Load Balancer über HTTP mit den Back-End-Diensten kommuniziert, glaube ich nicht, dass ich Nginx im Back-End-Dienst dazu bringen kann, einen 301 Zurückzusenden.

Ich habe ein Dutzend kleiner Optimierungen an Google Compute versucht und alle führen dazu, dass Google Compute einen 502 Zurückgibt.

Ich bin sicher, jemand anderes hat das schon einmal eingerichtet. Alle Tipps oder Hinweise in die richtige Richtung werden sehr geschätzt.

19
Ryan Leckey

Wir haben ein ähnliches Setup mit dem HTTP/HTTPS-Load-Balancer und es ist uns gelungen, HTTPS zu erzwingen. Es ist nicht direkt über den Load Balancer möglich, aber Sie können es über Ihren Backend-Service einrichten. Der Google Cloud Load Balancer setzt den X-Forwarded-Proto-http-Header entweder auf den Wert http oder auf https. Sie überprüfen diesen Header in Ihrem Backend-Service (in unserem Fall Varnish, dies könnte aber auch in Nginx erfolgen). Wenn der Wert http lautet, senden Sie eine 301 zurück.

20

Ich war heute mit diesem Problem konfrontiert und konnte es mit TCP Load Balancing) beheben. Wenn Sie die HTTP/HTTPS-spezifischen Load Balancer-Optionen nicht benötigen, können Sie möglicherweise TCP Load Balancer (kein SSL) zum Empfangen von Datenverkehr an Port 80 und 443. Für Datenverkehr von Port 80 können Sie 301 zurücksenden.

1
gselva