HTTP-zu-HTTPS-Weiterleitung für regionale externe Application Load Balancer einrichten

Auf dieser Seite erfahren Sie, wie Sie eine HTTP-zu-HTTPS-Weiterleitung für den regionalen externen Application Load Balancer einrichten. Diese Seite betrifft nur den regionalen externen Application Load Balancer. 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 mit URL-Zuordnungsweiterleitungen alle Anfragen von HTTP an HTTPS weiterleiten. In diesem Beispiel wird gezeigt, wie Sie Weiterleitungen mit den bekannten Ports 80 (für HTTP) und 443 (für HTTPS) einrichten. Sie müssen diese spezifischen Portnummern jedoch nicht verwenden. Jede Weiterleitungsregel für einen Application Load Balancer kann auf einen einzelnen Port von 1–65535 verweisen.

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

Regionale externe Application Load Balancer unterstützen keine HTTP-zu-HTTPS-Weiterleitungen beim Erstellen eines neuen Load Balancers. Sie müssen zuerst die Anleitung aus dem Compute Engine-Backend-Leitfaden verwenden, um einen neuen Load Balancer zu erstellen. Folgen Sie dann der Anleitung im nächsten Abschnitt, um eine Weiterleitung für alle Anfragen von HTTP zu HTTPS einzurichten.

Dieses Verfahren setzt voraus, dass Sie bereits einen externen HTTPS-Load-Balancer haben, der HTTPS-Traffic über Port 443 bereitstellt.

Für vorhandene Load-Balancer

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

  • Die gleiche Frontend-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-Frontend 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 (zum Vergrößern klicken)

Traffic an den HTTPS-Load-Balancer weiterleiten

Nachdem Sie überprüft haben, ob der HTTPS-Load Balancer (LB1) funktioniert, können Sie den partiellen externen HTTP-Load Balancer (LB2) mit seinem Frontend 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 Google Cloud Console verwenden, wird dies für Sie erledigt.

Regionale externe Application Load Balancer werden in der Google Cloud Console nicht unterstützt.

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. 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.
  4.        gcloud compute url-maps import web-map-http \
               --source /tmp/web-map-http.yaml \
               --region=REGION
           

    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.

  5. Vergewissern Sie sich, dass die URL-Zuordnung aktualisiert wurde. Die URL-Zuordnung Ihres HTTP-Load-Balancers sollte in etwa so aussehen:
  6.        gcloud compute url-maps describe web-map-http \
               --region=REGION
           
           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/regions/REGION/urlMaps/web-map-http
           
  7. Erstellen Sie einen neuen HTTP-Zielproxy oder aktualisieren Sie einen vorhandenen HTTP-Zielproxy mit web-map-http als URL-Zuordnung.
  8.        gcloud compute target-http-proxies create http-lb-proxy \
               --url-map=web-map-http \
               --region=REGION
           
    OR
            gcloud compute target-http-proxies update http-lb-proxy \
               --url-map=web-map-http \
               --region=REGION
           
  9. 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.
  10.        gcloud compute forwarding-rules create http-content-rule \
               --load-balancing-scheme=EXTERNAL_MANAGED \
               --address=lb-ipv4-1 \
               --network-tier=STANDARD \
               --region=REGION \
               --target-http-proxy=http-lb-proxy \
               --target-http-proxy-region=REGION \
               --ports=80
           

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)"
--region=REGION

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