In diesem Beispiel wird gezeigt, wie Sie mit Weiterleitungen von URL-Zuordnungen alle Anfragen von HTTP zu HTTPS weiterleiten. In diesem Beispiel wird gezeigt, wie Sie Weiterleitungen über die bekannten Ports 80 (für HTTP) und 443 (für HTTPS) einrichten. Die Verwendung dieser spezifischen Portnummern ist jedoch nicht erforderlich. 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-Application Load Balancer
Wenn Sie einen neuen Application Load Balancer erstellen, können Sie mit der Console von Google Cloud eine HTTP-zu-HTTPS-Weiterleitung einrichten.
Führen Sie die folgenden Schritte aus, um das Frontend des Load Balancers zu erstellen:
- Rufen Sie in der Google Cloud Console die Konfigurationsseite des Load-Balancers auf.
Load-Balancing aufrufen (globalen externen Application Load Balancer erstellen)
- Geben Sie unter Name des Load-Balancers einen Namen ein.
- Klicken Sie auf Frontend-Konfiguration.
- Wählen Sie für Protokoll die Option HTTPS (einschließlich HTTP/2) aus.
- Klicken Sie unter IP-Adresse auf IP-Adresse erstellen. Geben Sie einen Namen für die neue statische IP-Adresse ein und klicken Sie auf Reservieren.
- Wählen Sie unter Zertifikat ein SSL-Zertifikat aus.
- Klicken Sie auf das Kästchen HTTP-zu-HTTPS-Weiterleitung aktivieren, um die Weiterleitung zu erstellen.
- Klicken Sie auf Fertig.
- Schließen Sie das Backend und andere erforderliche Konfigurationen ab.
- Klicken Sie auf Erstellen.
Sie müssen das HTTPS-Protokoll auswählen und eine reservierte IP-Adresse (nicht sitzungsspezifisch) verwenden, um das Kästchen anzuklicken.
Verwenden Sie je nach Backend-Typ die Anleitungen für die Google 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-Frontend 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 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:
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
- Erstellen Sie eine YAML-Datei vom Typ
/tmp/web-map-http.yaml
. In diesem Beispiel wird MOVED_PERMANENTLY_DEFAULT als Antwortcode verwendet. - Validieren Sie die URL-Zuordnung.
- 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
. - Vergewissern Sie sich, dass die URL-Zuordnung aktualisiert wurde. Die URL-Zuordnung Ihres HTTP-Load-Balancers sollte in etwa so aussehen:
- Erstellen Sie einen neuen HTTP-Zielproxy oder aktualisieren Sie einen vorhandenen HTTP-Zielproxy mit
web-map-http
als URL-Zuordnung. - Erstellen Sie eine globale Weiterleitungsregel, um eingehende Anfragen an den Proxy weiterzuleiten. Das Flag
--address
gibtlb-ipv4-1
an. Dies ist dieselbe IP-Adresse, die für den externen HTTPS-Load-Balancer verwendet wird.
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¶meter2=value2 expectedOutputUrl: https://example.com/test/?parameter1=value1¶meter2=value2 expectedRedirectResponseCode: 301
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.
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.
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
gcloud compute target-http-proxies create http-lb-proxy \ --url-map=web-map-http \ --global
gcloud compute target-http-proxies update http-lb-proxy \ --url-map=web-map-http \ --global
gcloud compute forwarding-rules create http-content-rule \ --load-balancing-scheme=EXTERNAL_MANAGED \ --address=lb-ipv4-1 \ --network-tier=PREMIUM \ --global \ --target-http-proxy=http-lb-proxy \ --ports=80
Benutzerdefinierten HSTS-Header hinzufügen
Wenn Sie den HTTP-Strict-Transport-Security
-Header zum Backend-Dienst Ihres HTTPS-Load Balancers hinzufügen, sendet der Load Balancer den benutzerdefinierten Header an den Client, sodass der Browser beim nächsten Versuch des Clients, über HTTP auf die URL zuzugreifen, die Anfrage weiterleitet. Die
Header-Einstellungen wie folgt:
- Headername:
Strict-Transport-Security
- Headerwert:
max-age=31536000; includeSubDomains; preload
Verwenden Sie das Flag --custom-response-header
, um der Konfiguration des Backend-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
Ähnliche Abläufe
Informationen zur Verwendung von Terraform finden Sie auf dem Tab HTTP-zu-HTTPS-Weiterleitung.
Informationen zu GKE finden Sie in der GKE-zu-HTTPS-Weiterleitung in der GKE-Dokumentation.
Informationen zu internen Application Load Balancern finden Sie unter HTTP-zu-HTTPS-Weiterleitung für interne Application Load Balancer einrichten.
Informationen zu anderen Arten von Weiterleitungen finden Sie unter URL-Weiterleitungen.