Configurare il reindirizzamento da HTTP a HTTPS per i bilanciatori del carico delle applicazioni interni a livello di regione

Questo argomento mostra come utilizzare i reindirizzamenti della mappa URL per reindirizzare tutte le richieste interne del bilanciatore del carico delle applicazioni da HTTP a HTTPS. L'esempio in questa pagina utilizza le porte note 80 (per HTTP) e 443 (per HTTPS). Tuttavia, non è necessario utilizzare questi numeri di porta specifici. Ogni regola di forwarding per un bilanciatore del carico delle applicazioni può fare riferimento a una singola porta compresa tra 1 e 65535.

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

In linea generale, per reindirizzare il traffico HTTP a HTTPS, devi:

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

    Per farlo, devi creare un bilanciatore del carico HTTP interno parziale che abbia 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 prenotato 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 seguente diagramma, il bilanciatore del carico HTTPS è un bilanciatore del carico normale 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 del reindirizzamento interno da HTTP a HTTPS.
Configurazione del reindirizzamento HTTP-HTTPS interno (fai clic per ingrandire).

Crea il bilanciatore del carico HTTPS interno

Per configurare un bilanciatore del carico delle applicazioni interno regionale, segui le istruzioni riportate in Configurazione di un bilanciatore del carico delle applicazioni interno.

Se hai già un bilanciatore del carico delle applicazioni interno regionale funzionante, assicurati che abbia un indirizzo IP condiviso riservato per la regola di inoltro e poi passa alla sezione successiva, Reindirizza il traffico al bilanciatore del carico HTTPS.

Per i bilanciatori del carico delle applicazioni interni tra regioni, segui le istruzioni riportate in Configura un bilanciatore del carico delle applicazioni interno tra regioni con backend di gruppi di istanze VM per creare due bilanciatori del carico, quindi segui le istruzioni riportate in Reindirizza il traffico al bilanciatore del carico HTTPS.

Reindirizzare il traffico al bilanciatore del carico HTTPS

Crea un bilanciatore del carico HTTP parziale con 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

Seleziona il tipo di bilanciatore del carico

  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 multiregionale o in una singola regione, seleziona Ideale per workload regionali e fai clic su Avanti.
  6. Fai clic su Configura.

Configurazione di base

  1. In corrispondenza del 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 esistente l7-ilb-backend-service.
  3. Fai clic su OK.

Configurare la mappa URL

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

  5. Per 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 qualsiasi percorso senza corrispondenza.

Per informazioni sulla gestione del traffico, vedi Configurare la gestione del traffico per i bilanciatori del carico delle applicazioni 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 Subnet su backend-subnet.
  5. Imposta Porta su 80.
  6. Nel menu Indirizzo IP, seleziona l'indirizzo IP condiviso che è stato riservato 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. Controlla le impostazioni di configurazione del bilanciatore del carico.
  3. (Facoltativo) Fai clic su Codice equivalente per visualizzare la richiesta dell'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 del 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 degli 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
    

Testa 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