Questa pagina mostra come configurare un reindirizzamento da HTTP a HTTPS per il bilanciatore del carico delle applicazioni esterno regionale. Questa pagina riguarda solo un bilanciatore del carico delle applicazioni esterno regionale. Se utilizzi un bilanciatore del carico in una modalità diversa, consulta una delle seguenti pagine:
Questo esempio mostra come utilizzare i reindirizzamenti della mappa di URL per reindirizzare tutte le richieste da HTTP a HTTPS. Questo esempio mostra come configurare i reindirizzamenti utilizzando le porte ben note 80 (per HTTP) e 443 (per HTTPS). Tuttavia, non è necessario utilizzare questi numeri di porta specifici. Ogni regola di inoltro per un bilanciatore del carico delle applicazioni può fare riferimento a una singola porta da 1 a 65535.
HTTPS utilizza TLS (SSL) per criptare le richieste e le risposte HTTP, il che lo rende più sicuro. Un sito web che utilizza HTTPS ha https://
all'inizio
del suo URL anziché http://
.
Per i nuovi bilanciatori del carico HTTPS
I bilanciatori del carico delle applicazioni esterni regionali non supportano la creazione di reindirizzamenti da HTTP a HTTPS durante la creazione di un nuovo bilanciatore del carico. Per prima cosa, devi utilizzare le istruzioni riportate nella guida al backend Compute Engine per creare un nuovo bilanciatore del carico. Puoi quindi utilizzare le istruzioni riportate nella sezione successiva per configurare un reindirizzamento per tutte le richieste da HTTP ad HTTPS.
Questa procedura presuppone che tu abbia già un bilanciatore del carico HTTPS esterno che gestisce il traffico HTTPS sulla porta 443.
Per i bilanciatori del carico esistenti
Se disponi già di un bilanciatore del carico delle applicazioni HTTPS (qui denominato LB1) che serve traffico HTTPS sulla porta 443, devi creare un bilanciatore del carico delle applicazioni HTTP parziale (qui denominato LB2) con la seguente configurazione:
- Lo stesso indirizzo IP frontend utilizzato da LB1
- Un reindirizzamento configurato nella mappa URL
Questo bilanciatore del carico HTTP parziale utilizza lo stesso indirizzo IP del bilanciatore del carico HTTPS e reindirizza le richieste HTTP al frontend HTTPS del bilanciatore del carico.
Questa architettura è mostrata nel seguente diagramma.
Reindirizzamento del traffico al bilanciatore del carico HTTPS
Dopo aver verificato che il bilanciatore del carico HTTPS (LB1) funziona, puoi creare il bilanciatore del carico HTTP parziale (LB2) con il relativo frontend configurato per reindirizzare il traffico a LB1.
Questo esempio utilizza il codice di risposta 301. In alternativa, puoi utilizzare un codice di risposta diverso.
Per configurare il reindirizzamento con gcloud
, devi importare un file YAML e assicurarti che il proxy HTTP di destinazione indichi la mappa URL che reindirizza il traffico. Se utilizzi la console Google Cloud, questa operazione viene gestita per te.
I bilanciatori del carico delle applicazioni esterni regionali non sono supportati nella console Google Cloud.
gcloud
- Crea un file YAML
/tmp/web-map-http.yaml
. In questo esempio viene utilizzato MOVED_PERMANENTLY_DEFAULT come codice di risposta. - Crea la mappa URL del bilanciatore del carico HTTP importando il file YAML. Il nome di questa mappa URL è
web-map-http
. - Verifica che la mappa URL sia aggiornata. La mappa degli URL del bilanciatore del carico HTTP dovrebbe avere il seguente aspetto:
- Crea un nuovo proxy HTTP di destinazione o aggiornane uno esistente,
utilizzando
web-map-http
come mappa URL. - Crea una regola di forwarding per instradare le richieste in entrata al proxy. Il flag
--address
specificalb-ipv4-1
, che è lo stesso indirizzo IP utilizzato per il bilanciatore del carico HTTPS esterno.
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 import web-map-http \ --source /tmp/web-map-http.yaml \ --region=REGION
Se stai aggiornando una mappa URL esistente, viene visualizzato il seguente messaggio:
Url Map [web-map-http] will be overwritten. Do you want to continue (Y/n)?
Per continuare, premi Y.
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
gcloud compute target-http-proxies create http-lb-proxy \ --url-map=web-map-http \ --region=REGION
gcloud compute target-http-proxies update http-lb-proxy \ --url-map=web-map-http \ --region=REGION
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
Test del reindirizzamento da HTTP a HTTPS
Prendi nota dell'indirizzo IP riservato che utilizzi per entrambi i bilanciatori del carico.
gcloud compute addresses describe lb-ipv4-1
--format="get(address)"
--region=REGION
In questo esempio, supponiamo che l'indirizzo IP riservato sia 34.98.77.106
. L'URL
http://34.98.77.106/
reindirizza a https://34.98.77.106/
.
Dopo alcuni minuti, puoi verificare eseguendo il seguente comando curl
.
curl -v http://hostname.com
Esempio di output:
* 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
Procedure correlate
Per utilizzare Terraform, consulta la scheda di reindirizzamento da HTTP a HTTPS.
Per GKE, consulta i reindirizzamenti da HTTP ad HTTPS nella documentazione GKE.
Per i bilanciatori del carico delle applicazioni interni, consulta Configurazione del reindirizzamento da HTTP a HTTPS per bilanciatori del carico delle applicazioni interni.
Per altri tipi di reindirizzamenti, consulta Reindirizzamenti.