HTTP-zu-HTTPS-Weiterleitung für einen globalen externen HTTP(S)-Load-Balancer (klassisch) einrichten

Auf dieser Seite wird beschrieben, wie Sie eine HTTP-zu-HTTPS-Weiterleitung für den globalen externen HTTP(S)-Load-Balancer (klassisch) einrichten. Diese Seite gilt nur für globale externe HTTP(S)-Load-Balancer (klassisch). Wenn Sie einen Load-Balancer in einem anderen Modus verwenden, finden Sie weitere Informationen auf den folgenden Seiten:

In diesem Beispiel wird gezeigt, wie Sie URL-Weiterleitungen verwenden, um alle Anfragen von Port 80 (HTTP) an Port 443 (HTTPS) weiterzuleiten.

HTTPS verwendet TLS (SSL), um HTTP-Anfragen und -Antworten zu verschlüsseln, wodurch es sicherer wird. Bei einer Website, die HTTPS verwendet, steht am Anfang der URL https:// anstelle von http://.

Für neue HTTPS-Load-Balancer

Wenn Sie einen neuen HTTPS-Load-Balancer erstellen, können Sie mit der Cloud Console von Google Cloud eine HTTP-zu-HTTPS-Weiterleitung einrichten.

Führen Sie die folgenden Schritte aus, um das Front-End des HTTPS-Load-Balancers zu erstellen:

  1. Rufen Sie in der Google Cloud Console die Konfigurationsseite des Load-Balancers auf.

    Load-Balancing aufrufen (klassisch)

  2. Klicken Sie auf Front-End-Konfiguration.
  3. Wählen Sie unter Protokoll die Option HTTPS (einschließlich HTTP/2) aus.
  4. Wählen Sie unter IP-Adresse eine reservierte IP-Adresse aus.
  5. Klicken Sie auf das Kästchen HTTP-zu-HTTPS-Weiterleitung aktivieren, um die Weiterleitung zu erstellen.

Sie müssen das HTTPS-Protokoll auswählen und eine reservierte IP-Adresse (nicht sitzungsspezifisch) verwenden, um das Kästchen anzuklicken.

Kästchen für die HTTP-zu-HTTPS-Weiterleitung in der Cloud Console
Abbildung 1. Kästchen für die HTTP-zu-HTTPS-Weiterleitung in der Cloud Console (zum Vergrößern klicken)

Verwenden Sie je nach Back-End-Typ die Anleitungen für die Cloud Console aus einem der folgenden Leitfäden, um diese Einrichtung abzuschließen:

Wenn Sie das Kästchen HTTP-zu-HTTPS-Weiterleitung aktivieren aktivieren, wird automatisch ein zusätzlicher partieller HTTP-Load-Balancer aus einer URL-Zuordnung, einer Weiterleitungsregel und einem Ziel-HTTP-Proxy erstellt. Dieser partielle HTTP-Load-Balancer verwendet dieselbe IP-Adresse wie Ihr HTTPS-Load-Balancer und leitet HTTP-Anfragen an das HTTPS-Front-End Ihres Load-Balancers weiter. Als Standardweiterleitungscode wird 301 Moved Permanently verwendet.

Nachdem der HTTPS-Load-Balancer erstellt wurde, wird der partielle HTTP-Load-Balancer in der Load-Balancer-Liste mit dem Suffix -redirect angezeigt. Testen Sie Ihre Einrichtung anhand der Schritte unter HTTP-zu-HTTPS-Weiterleitung testen.

Für vorhandene Load-Balancer

Wenn Sie bereits einen externen HTTPS-Load-Balancer (hier LB1 genannt) haben, der HTTPS-Traffic auf Port 443 bedient, müssen Sie einen partiellen externen HTTP-Load-Balancer (hier LB2 genannt) mit der folgenden Konfiguration erstellen:

  • Die gleiche Front-End-IP-Adresse, die vom LB1 verwendet wird
  • Eine in der URL-Zuordnung konfigurierte Weiterleitung

Dieser partielle HTTP-Load-Balancer verwendet dieselbe IP-Adresse wie Ihr HTTPS-Load-Balancer und leitet HTTP-Anfragen an das HTTPS-Front-End Ihres Load-Balancers weiter.

Diese Architektur ist im folgenden Diagramm dargestellt:

Grafik: Konfiguration der HTTP-zu-HTTPS-Weiterleitung
Abbildung 2. Konfigurationsarchitektur der HTTP-zu-HTTPS-Weiterleitung

Traffic an den HTTPS-Load-Balancer weiterleiten

Nachdem Sie überprüft haben, ob der externe HTTPS-Load-Balancer (LB1) funktioniert, können Sie den partiellen externen HTTP-Load-Balancer (LB2) mit seinem Front-End erstellen, um den Traffic an LB1 weiterzuleiten.

In diesem Beispiel wird der Antwortcode 301 verwendet. Sie können aber auch einen anderen Antwortcode nutzen.

Zum Konfigurieren der Weiterleitung mit gcloud müssen Sie eine YAML-Datei importieren und Ihr Ziel-HTTP-Proxy muss auf die URL-Zuordnung verweisen, die Traffic weiterleitet. Wenn Sie die Cloud Console verwenden, wird dies für Sie erledigt.

Regionale externe HTTP(S)-Load-Balancer werden in der Cloud Console nicht unterstützt.

Console

Konfiguration starten
  1. Rufen Sie in der Google Cloud Console die Seite Load-Balancing auf.

    Load-Balancing aufrufen

  2. Klicken Sie unter HTTP(S)-Load-Balancing auf Konfiguration starten.
  3. Wählen Sie unter Internet oder nur intern die Option Vom Internet zu meinen VMs aus.
  4. Wählen Sie unter Global oder regional die Option Globaler HTTP(S)-Load-Balancer (klassisch) aus.
  5. Geben Sie als Name des Load-Balancers beispielsweise http-redirect ein.
  6. Lassen Sie das Fenster geöffnet, um fortzufahren.
Back-End-Konfiguration überspringen
  1. Überspringen Sie den Abschnitt Back-End-Konfiguration.
Weiterleitung in der URL-Zuordnung konfigurieren
  1. Klicken Sie in der linken Spalte des Bildschirms auf Host- und Pfadregeln.
  2. Wählen Sie Erweiterte Host- und Pfadregel (URL-Weiterleitung, URL-Umschreibung) aus.
  3. Wählen Sie unter Aktion die Option Client zu einem anderen Host/Pfad weiterleiten aus.
  4. Lassen Sie das Feld Präfixweiterleitung leer.
  5. Wählen Sie unter Pfadweiterleitung die Option Präfixweiterleitung aus.
  6. Lassen Sie das Feld Pfadwert leer.
  7. Wählen Sie unter Antwortcode weiterleiten die Option 301 – Dauerhaft verschoben aus.
  8. Wählen Sie unter HTTPS-Weiterleitung die Option Aktivieren aus.
  9. Klicken Sie auf Fertig.
  10. Lassen Sie die Konfigurationsseite des Load-Balancers geöffnet, um fortzufahren.
HTTP-Weiterleitungsregel mit derselben IP-Adresse konfigurieren, die in LB1 verwendet wird
  1. Klicken Sie auf der Konfigurationsseite des Load-Balancers auf Front-End-Konfiguration.
  2. Legen Sie als Protokoll HTTP fest.
  3. Legen Sie als IP-Adresse die *gleiche* IP-Adresse fest, die Sie für Ihren HTTPS-Load-Balancer verwendet haben.
  4. Achten Sie darauf, dass der Port auf 80 gesetzt ist, um HTTP-Traffic zuzulassen.
  5. Klicken Sie auf Fertig.
  6. Lassen Sie das Fenster geöffnet, um fortzufahren.
  7. Konfiguration prüfen
  8. Klicken Sie im linken Bereich auf Prüfen und abschließen.
  9. Vergleichen Sie die Einstellungen mit denen, die Sie erstellen wollten.
  10. Wenn alles korrekt aussieht, klicken Sie auf Erstellen.

Wenn Sie fertig sind, zeigt die Cloud Console zwei Load-Balancer folgendermaßen an.

Beide Load-Balancer

Die Cloud Console zeigt Informationen zu Ihrem web-map-http-Load-Balancer folgendermaßen an.

HTTP-Lastenausgleichsmodul

gcloud

  1. Erstellen Sie eine YAML-Datei vom Typ /tmp/web-map-http.yaml. In diesem Beispiel wird MOVED_PERMANENTLY_DEFAULT als Antwortcode verwendet.
  2.        kind: compute#urlMap
           name: web-map-http
           defaultUrlRedirect:
             redirectResponseCode: MOVED_PERMANENTLY_DEFAULT
             httpsRedirect: True
           tests:
           - description: Test with no query parameters
             host: example.com
             path: /test/
             expectedOutputUrl: https://example.com/test/
             expectedRedirectResponseCode: 301
           - description: Test with query parameters
             host: example.com
             path: /test/?parameter1=value1&parameter2=value2
             expectedOutputUrl: https://example.com/test/?parameter1=value1&parameter2=value2
             expectedRedirectResponseCode: 301
           
  3. Validieren Sie die URL-Zuordnung.
  4.        gcloud compute url-maps validate --source /tmp/web-map-http.yaml
           

    Wenn die Tests erfolgreich sind und der Befehl eine Erfolgsmeldung ausgibt, speichern Sie die Änderungen in der URL-Zuordnung.

  5. Erstellen Sie die URL-Zuordnung des HTTP-Load-Balancers. Importieren Sie dazu die YAML-Datei. Der Name für diese URL-Zuordnung ist web-map-http.
  6.        gcloud compute url-maps import web-map-http \
               --source /tmp/web-map-http.yaml \
               --global
           

    Wenn Sie eine vorhandene URL-Zuordnung aktualisieren, wird die folgende Eingabeaufforderung angezeigt:

           Url Map [web-map-http] will be overwritten.
    
           Do you want to continue (Y/n)?
           

    Drücken Sie Y, um fortzufahren.

  7. Vergewissern Sie sich, dass die URL-Zuordnung aktualisiert wurde. Die URL-Zuordnung Ihres HTTP-Load-Balancers sollte in etwa so aussehen:
  8.        gcloud compute url-maps describe web-map-http
           
           creationTimestamp: '2020-03-23T10:53:44.976-07:00'
           defaultUrlRedirect:
             httpsRedirect: true
             redirectResponseCode: MOVED_PERMANENTLY_DEFAULT
           fingerprint: 3A5N_RLrED8=
           id: '2020316695093397831'
           kind: compute#urlMap
           name: web-map-http
           selfLink: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/urlMaps/web-map-http
           
  9. Erstellen Sie einen neuen HTTP-Zielproxy oder aktualisieren Sie einen vorhandenen HTTP-Zielproxy mit web-map-http als URL-Zuordnung.
  10.        gcloud compute target-http-proxies create http-lb-proxy \
               --url-map=web-map-http \
               --global
           
    OR
           gcloud compute target-http-proxies update http-lb-proxy \
               --url-map=web-map-http \
               --global
           
  11. Erstellen Sie eine globale Weiterleitungsregel, um eingehende Anfragen an den Proxy weiterzuleiten. Das Flag --address gibt lb-ipv4-1 an. Dies ist dieselbe IP-Adresse, die für den externen HTTPS-Load-Balancer verwendet wird.
  12.        gcloud compute forwarding-rules create http-content-rule \
               --load-balancing-scheme=EXTERNAL \
               --network-tier=PREMIUM \
               --address=lb-ipv4-1 \
               --global \
               --target-http-proxy=http-lb-proxy \
               --ports=80
           

Benutzerdefinierten Header hinzufügen

Fügen Sie optional den HTTP-Header Strict-Transport-Security zum Back-End-Dienst Ihres HTTPS-Load-Balancers so hinzu:

  • Headername: Strict-Transport-Security
  • Headerwert: max-age=31536000; includeSubDomains; preload

Mit dieser Einstellung wird der benutzerdefinierte Header an den Client gesendet, damit der Browser beim nächsten Versuch des Clients, über HTTP auf die URL zuzugreifen, die Weiterleitung vornimmt.

Verwenden Sie das Flag --custom-response-header, um der Konfiguration des Back-End-Dienstes den benutzerdefinierten Header hinzuzufügen.

gcloud compute backend-services update BACKEND_SERVICE_NAME_LB1 \
    --global \
    --custom-response-header='Strict-Transport-Security:max-age=31536000; includeSubDomains; preload'

Weitere Informationen finden Sie unter Benutzerdefinierte Header erstellen.

HTTP-zu-HTTPS-Weiterleitung testen

Notieren Sie sich die reservierte IP-Adresse, die Sie für beide Load-Balancer nutzen.

gcloud compute addresses describe lb-ipv4-1 \
    --format="get(address)" \
    --global

In diesem Beispiel wird davon ausgegangen, dass die reservierte IP-Adresse 34.98.77.106 ist. Die URL http://34.98.77.106/ leitet zu https://34.98.77.106/ weiter.

Nach einigen Minuten können Sie die Weiterleitung mit dem folgenden Befehl curl testen.

curl -v http://hostname.com

Beispielausgabe:

* Connected to 34.98.77.106 (34.98.77.106) port 80 (#0)
> GET / HTTP/1.1
> Host: hostname.com
> User-Agent: curl/7.64.0
> Accept: */*
>
< HTTP/1.1 301 Moved Permanently
< Cache-Control: private
< Content-Type: text/html; charset=UTF-8
< Referrer-Policy: no-referrer
< Location: https://hostname.com
< Content-Length: 220
< Date: Fri, 30 Jul 2021 21:32:25 GMT
<
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="https://hostname.com">here</A>.
</BODY></HTML>
* Connection #0 to host hostname.com left intact

Nächste Schritte