Configura un reindirizzamento HTTP-to-HTTPS per bilanciatori del carico delle applicazioni esterni regionali

Questa pagina mostra come configurare un reindirizzamento da HTTP a HTTPS per l'Application Load Balancer esterno regionale. Questa pagina è dedicata solo a 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 delle mappe degli URL per reindirizzare tutte le richieste da HTTP a HTTPS. Questo esempio mostra come configurare i reindirizzamenti utilizzando le note porte 80 (per HTTP) e 443 (per HTTPS). Tuttavia, non è obbligatorio utilizzare questi numeri di porta specifici. Ogni regola di forwarding per un bilanciatore del carico delle applicazioni può fare riferimento a una singola porta da 1-65535.

HTTPS utilizza TLS (SSL) per criptare le richieste e le risposte HTTP, rendendole più sicure e sicure. Un sito web che utilizza HTTPS presenta il carattere https:// all'inizio dell'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 creare un nuovo bilanciatore del carico, dovrai prima utilizzare le istruzioni della guida al backend di Compute Engine. Puoi quindi utilizzare le istruzioni nella sezione successiva per impostare un reindirizzamento per tutte le richieste da HTTP a HTTPS.

Questa procedura presuppone che tu disponga già di un bilanciatore del carico HTTPS esterno che gestisce il traffico HTTPS sulla porta 443.

Per i bilanciatori del carico esistenti

Se hai già un bilanciatore del carico delle applicazioni HTTPS (chiamato qui LB1) che gestisce il traffico HTTPS sulla porta 443, devi creare un bilanciatore del carico delle applicazioni HTTP parziale (chiamato qui 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 diagramma seguente.

Architettura di configurazione del reindirizzamento da HTTP a HTTPS.
Figura 2. Architettura di configurazione del reindirizzamento da HTTP a HTTPS (fai clic per ingrandire).

Reindirizzamento del traffico al bilanciatore del carico HTTPS

Dopo aver verificato che il bilanciatore del carico HTTPS (LB1) funzioni, puoi creare il bilanciatore del carico HTTP parziale (LB2) con il frontend configurato per reindirizzare il traffico a LB1.

In questo esempio viene utilizzato il codice di risposta 301. 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 punti alla mappa degli URL che reindirizza il traffico. Se utilizzi la console Google Cloud, questo viene gestito per te.

I bilanciatori del carico delle applicazioni esterni regionali non sono supportati nella console Google Cloud.

gcloud

  1. Crea un file YAML /tmp/web-map-http.yaml. Questo esempio utilizza MOVED_PERMANENTLY_DEFAULT come codice di risposta.
  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. Crea la mappa URL del bilanciatore del carico HTTP importando il file YAML. Il nome di questa mappa URL è web-map-http.
  4.        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.

  5. Verifica che la mappa degli URL sia aggiornata. La mappa URL del bilanciatore del carico HTTP dovrebbe avere il seguente aspetto:
  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. Crea un nuovo proxy HTTP di destinazione o aggiorna un proxy HTTP di destinazione esistente, utilizzando web-map-http come mappa URL.
  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. Crea una regola di forwarding per instradare le richieste in entrata al proxy. Il flag --address specifica lb-ipv4-1, che è lo stesso indirizzo IP utilizzato per il bilanciatore del carico HTTPS esterno.
  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
           

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 qualche minuto, puoi verificarlo 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

Passaggi successivi