Questo argomento spiega 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 ben note 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 a 65535.
Per configurare i reindirizzamenti da HTTP ad HTTPS, devi 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 proprio proxy di destinazione e la propria mappa di 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 grandi linee, per reindirizzare il traffico HTTP a HTTPS, devi:
- Crea un bilanciatore del carico HTTPS interno normale con un indirizzo IP interno riservato e condiviso.
- Testa il bilanciatore del carico per assicurarti che funzioni.
Reindirizza il traffico al bilanciatore del carico HTTPS.
Per farlo, devi creare un bilanciatore del carico HTTP interno parziale con un solo 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 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.
Crea il bilanciatore del carico HTTPS interno
Per configurare un bilanciatore del carico delle applicazioni interno regionale, segui le istruzioni riportate nella sezione Configurare 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 riservato e condiviso per la regola di inoltro, quindi vai 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 Configurare 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 Rindirizzare il traffico al bilanciatore del carico HTTPS.
Reindirizza 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
Avvia la configurazione
Nella console Google Cloud, vai alla pagina Bilanciamento del carico.
- Fai clic su Crea bilanciatore del carico.
- In Tipo di bilanciatore del carico, seleziona Bilanciatore del carico delle applicazioni (HTTP/HTTPS) e fai clic su Avanti.
- In Pubblico o interno, seleziona Interno e fai clic su Avanti.
- In Deployment tra regioni o in una regione singola, seleziona Ideale per workload regionali e fai clic su Avanti.
- Fai clic su Configura.
Configurazione di base
- Inserisci
l7-ilb-http-redirect
come nome del bilanciatore del carico. - In Regione, seleziona
us-west1
. - In Rete, seleziona
lb-network
.
Configura il servizio di backend
- Fai clic su Configurazione backend.
- Nel menu Seleziona servizi di backend, seleziona il servizio di backend
l7-ilb-backend-service
esistente. - Fai clic su OK.
Configura la mappa URL
- Fai clic su Regole di routing.
- In Modalità, seleziona Regola avanzata per host e percorso.
- Fai clic su Aggiungi regola host e percorso.
Imposta Host su
*
.In Matcher percorso (corrispondenze, azioni e servizi), inserisci il seguente codice:
name: matcher1 defaultUrlRedirect: httpsRedirect: true hostRedirect: IP_ADDRESS:443 redirectResponseCode: PERMANENT_REDIRECT
Assicurati che
l7-ilb-backend-service
sia l'unico servizio di backend per qualsiasi host e percorso senza corrispondenza.
Per informazioni sulla gestione del traffico, consulta Configurare la gestione del traffico per i bilanciatori del carico delle applicazioni interni.
Configura il frontend per HTTP
- Fai clic su Configurazione frontend.
- Imposta il nome della regola di forwarding su
l7-ilb-forwarding-rule
. - Imposta Protocollo su
HTTP
. - Imposta Subnet su
backend-subnet
. - Imposta Porta su
80
. - Nel menu Indirizzo IP, seleziona l'indirizzo IP condiviso che è stato riservato per la regola di inoltro del bilanciatore del carico HTTPS.
- Fai clic su Fine.
Rivedi la configurazione
- Fai clic su Esamina e finalizza.
- Rivedi le impostazioni di configurazione del bilanciatore del carico.
- (Facoltativo) Fai clic su Codice equivalente per visualizzare la richiesta dell'API REST che verrà utilizzata per creare il bilanciatore del carico.
- Fai clic su Crea.
gcloud
Crea una nuova mappa URL creando un file YAML con la configurazione del reindirizzamento del traffico. Sostituisci IP_ADDRESS con l' indirizzo IP condiviso riservato per la regola di inoltro 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
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
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
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
Connettiti alla VM client.
gcloud compute ssh l7-ilb-client-us-west1-a \ --zone=us-west1-a
Invia una richiesta HTTP a IP_ADDRESS sulla porta
80
e aspettati un reindirizzamento del traffico.curl -L -k IP_ADDRESS
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
Per scoprire come funzionano i bilanciatori del carico delle applicazioni interni, consulta la panoramica dei bilanciatori del carico delle applicazioni interni.
Per gestire la risorsa subnet solo proxy richiesta dai bilanciatori del carico delle applicazioni interni, consulta Subnet solo proxy per bilanciatori del carico delle applicazioni interni.