Configura il reindirizzamento da HTTP a HTTPS per i bilanciatori del carico delle applicazioni interni regionali

Questo argomento mostra come utilizzare i reindirizzamenti delle mappe degli URL per reindirizzare tutte le richieste interne del bilanciatore del carico delle applicazioni da HTTP a HTTPS. L'esempio in questa pagina utilizza 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.

Per configurare i reindirizzamenti da HTTP a HTTPS, è necessario creare due bilanciatori del carico: uno per il traffico HTTPS e un altro per il traffico HTTP. Ogni bilanciatore del carico ha la propria regola di forwarding, il proxy di destinazione e la mappa URL, ma condividono lo stesso indirizzo IP. Per il bilanciatore del carico HTTP, non è necessario configurare un backend perché il frontend reindirizza il traffico al backend del bilanciatore del carico HTTPS.

A livello generale, per reindirizzare il traffico HTTP a HTTPS, è necessario:

  1. Crea un normale bilanciatore del carico HTTPS interno con un indirizzo IP interno condiviso e riservato.
  2. Testa il bilanciatore del carico per assicurarti che funzioni.
  3. Reindirizzare il traffico al bilanciatore del carico HTTPS.

    Per farlo, devi creare un bilanciatore del carico HTTP interno parziale che ha solo un frontend. Il frontend riceve le richieste e le reindirizza al bilanciatore del carico HTTPS utilizzando le seguenti risorse:

    • Una regola di forwarding con lo stesso indirizzo IP interno riservato del bilanciatore del carico HTTPS creato nel passaggio 1.
    • Un proxy HTTP di destinazione
    • Una mappa URL che reindirizza il traffico al bilanciatore del carico HTTPS

Come mostrato nel diagramma seguente, il bilanciatore del carico HTTPS è un normale bilanciatore del carico con i componenti del bilanciatore del carico delle applicazioni interno previsti.

Il bilanciatore del carico HTTP ha lo stesso indirizzo IP del bilanciatore del carico HTTPS e un'istruzione di reindirizzamento nella mappa URL.

Configurazione reindirizzamento da HTTP a HTTPS interno.
Configurazione di reindirizzamento da HTTP a HTTPS interno (fai clic per ingrandire).

Crea il bilanciatore del carico HTTPS interno

Per configurare un bilanciatore del carico delle applicazioni interno regionale, utilizza le istruzioni per configurare un bilanciatore del carico delle applicazioni interno.

Se hai già un Application Load Balancer interno regionale funzionante, assicurati che abbia un indirizzo IP condiviso e riservato per la regola di forwarding, quindi passa alla sezione successiva, Reindirizzare il traffico al bilanciatore del carico HTTPS.

Per gli Application Load Balancer interni tra regioni, segui le istruzioni riportate in Configurare un Application Load Balancer interno tra regioni con backend di gruppi di istanze VM per creare due bilanciatori del carico, quindi segui le istruzioni riportate in Reindirizzare il traffico al bilanciatore del carico HTTPS.

Reindirizza il traffico al bilanciatore del carico HTTPS

Crea un bilanciatore del carico HTTP parziale che abbia lo stesso indirizzo IP del bilanciatore del carico HTTPS creato nel passaggio precedente. Il bilanciatore del carico parziale reindirizza il traffico dalla porta 80 alla porta 443.

Console

Avvia la configurazione

  1. Nella console Google Cloud, vai alla pagina Bilanciamento del carico.

    Vai a Bilanciamento del carico

  2. Fai clic su Crea bilanciatore del carico.
  3. In Tipo di bilanciatore del carico, seleziona Bilanciatore del carico delle applicazioni (HTTP/HTTPS) e fai clic su Avanti.
  4. In Pubblico o interno, seleziona Interno e fai clic su Avanti.
  5. In Deployment in più regioni o in una singola regione, seleziona Ideale per carichi di lavoro a livello di regione e fai clic su Avanti.
  6. Fai clic su Configura.

Configurazione di base

  1. Come nome del bilanciatore del carico, inserisci l7-ilb-http-redirect.
  2. In Regione, seleziona us-west1.
  3. In Rete, seleziona lb-network.

Configura il servizio di backend

  1. Fai clic su Configurazione backend.
  2. Nel menu Seleziona servizi di backend, seleziona il servizio di backend l7-ilb-backend-service esistente.
  3. Fai clic su Ok.

Configura la mappa URL

  1. Fai clic su Regole di routing.
  2. In Modalità, seleziona Regola host e percorso avanzata.
  3. Fai clic su Aggiungi regola host e percorso.
  4. Imposta Host su *.

  5. In Matcher percorso (corrispondenze, azioni e servizi), inserisci il seguente codice:

    name: matcher1
    defaultUrlRedirect:
      httpsRedirect: true
      hostRedirect: IP_ADDRESS:443
      redirectResponseCode: PERMANENT_REDIRECT
    

  6. Assicurati che l7-ilb-backend-service sia l'unico servizio di backend per qualsiasi host senza corrispondenza e percorso senza corrispondenza.

Per informazioni sulla gestione del traffico, consulta Configurare la gestione del traffico per gli Application Load Balancer interni.

Configura il frontend per HTTP

  1. Fai clic su Configurazione frontend.
  2. Imposta il nome della regola di forwarding su l7-ilb-forwarding-rule.
  3. Imposta Protocollo su HTTP.
  4. Imposta la Subnet su backend-subnet.
  5. Imposta la Porta su 80.
  6. Nel menu Indirizzo IP, seleziona l'indirizzo IP condiviso che è stato prenotato per la regola di forwarding del bilanciatore del carico HTTPS.
  7. Fai clic su Fine.

Rivedi la configurazione

  1. Fai clic su Esamina e finalizza.
  2. Rivedi le impostazioni di configurazione del bilanciatore del carico.
  3. (Facoltativo) Fai clic su Codice equivalente per visualizzare la richiesta API REST che verrà utilizzata per creare il bilanciatore del carico.
  4. Fai clic su Crea.

gcloud

  1. Crea una nuova mappa URL creando un file YAML con la configurazione di reindirizzamento del traffico. Sostituisci IP_ADDRESS con l'indirizzo IP condiviso che è stato prenotato per la regola di forwarding del bilanciatore del carico HTTPS.

    defaultService: regions/us-west1/backendServices/l7-ilb-backend-service
    kind: compute#urlMap
    name: l7-ilb-redirect-url-map
    hostRules:
    - hosts:
     - '*'
     pathMatcher: matcher1
    pathMatchers:
    - name: matcher1
     defaultUrlRedirect:
           hostRedirect: IP_ADDRESS:443
           redirectResponseCode: PERMANENT_REDIRECT
           httpsRedirect: True
    
  2. Importa il file YAML nella nuova mappa URL:

    gcloud compute url-maps import l7-ilb-redirect-url-map \
       --source=/tmp/url_map.yaml \
       --region=us-west1
    
  3. Crea il proxy di destinazione del bilanciatore del carico HTTP:

    gcloud compute target-http-proxies create l7-ilb-http-proxy \
       --url-map=l7-ilb-redirect-url-map \
       --region=us-west1
    
  4. Crea una nuova regola di forwarding e l'indirizzo IP condiviso:

    gcloud compute forwarding-rules create l7-ilb-forwarding-rule \
       --load-balancing-scheme=INTERNAL_MANAGED \
       --network=lb-network \
       --subnet=backend-subnet \
       --address=IP_ADDRESS \
       --ports=80 \
       --region=us-west1 \
       --target-http-proxy=l7-ilb-http-proxy \
       --target-http-proxy-region=us-west1
    

Testare il reindirizzamento del traffico

  1. Connettiti alla VM client.

    gcloud compute ssh l7-ilb-client-us-west1-a \
       --zone=us-west1-a
    
  2. Invia una richiesta HTTP a IP_ADDRESS sulla porta 80 e prevedi un reindirizzamento del traffico.

    curl -L -k IP_ADDRESS
    
  3. Visualizza l'output di esempio.

    Page served from: l7-ilb-backend-w11t
    

    Aggiungi -vvv per visualizzare ulteriori dettagli.

    curl -L -k IP_ADDRESS -vvv
    

    • Rebuilt URL to: IP_ADDRESS/
    • Trying IP_ADDRESS...
    • TCP_NODELAY set
    • Connected to IP_ADDRESS (IP_ADDRESS) port 80 (#0) > GET / HTTP/1.1 > Host: IP_ADDRESS > User-Agent: curl/7.52.1 > Accept: / > < HTTP/1.1 308 Permanent Redirect < location: https://IP_ADDRESS:443/ < date: Fri, 07 Aug 2020 05:07:18 GMT < via: 1.1 google < content-length: 0 <
    • Curl_http_done: called premature == 0
    • Connection #0 to host IP_ADDRESS left intact
    • Issue another request to this URL: 'https://IP_ADDRESS:443/'
    • Trying IP_ADDRESS...
    • TCP_NODELAY set
    • Connected to IP_ADDRESS (IP_ADDRESS) port 443 (#1)
    • ALPN, offering h2
    • ALPN, offering http/1.1
    • Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
    • successfully set certificate verify locations:
    • CAfile: /etc/ssl/certs/ca-certificates.crt CApath: /etc/ssl/certs ... ...
    • SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256
    • ALPN, server accepted to use h2
    • Server certificate:
    • subject: O=Google TESTING; CN=test_cert_1
    • start date: Jan 1 00:00:00 2015 GMT
    • expire date: Jan 1 00:00:00 2025 GMT
    • issuer: O=Google TESTING; CN=Intermediate CA
    • SSL certificate verify result: unable to get local issuer certificate (20), continuing anyway.
    • Using HTTP2, server supports multi-use
    • Connection state changed (HTTP/2 confirmed)
    • Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
    • Using Stream ID: 1 (easy handle 0x561a6b0e3ea0) > GET / HTTP/1.1 > Host: IP_ADDRESS > User-Agent: curl/7.52.1 > Accept: / >
    • Connection state changed (MAX_CONCURRENT_STREAMS updated)! < HTTP/2 200 < date: Fri, 07 Aug 2020 05:07:18 GMT < server: Apache/2.4.25 (Debian) < last-modified: Thu, 06 Aug 2020 13:30:21 GMT < etag: "2c-5ac357d7a47ec" < accept-ranges: bytes < content-length: 44 < content-type: text/html < via: 1.1 google < Page served from: l7-ilb-backend-https-w11t
    • Curl_http_done: called premature == 0
    • Connection #1 to host IP_ADDRESS left intact

Passaggi successivi