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:
- Crea un bilanciatore del carico HTTPS interno regolare con un indirizzo IP interno condiviso riservato.
- 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 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.
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
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 multiregionale o in una singola regione, seleziona Ideale per workload regionali e fai clic su Avanti.
- Fai clic su Configura.
Configurazione di base
- In corrispondenza del nome del bilanciatore del carico, inserisci
l7-ilb-http-redirect
. - 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
esistente
l7-ilb-backend-service
. - Fai clic su OK.
Configurare la mappa URL
- Fai clic su Regole di routing.
- Per Modalità, seleziona Regola avanzata per host e percorso.
- Fai clic su Aggiungi regola host e percorso.
Imposta Host su
*
.Per 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 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
- 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 forwarding del bilanciatore del carico HTTPS.
- Fai clic su Fine.
Rivedi la configurazione
- Fai clic su Esamina e finalizza.
- Controlla 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 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
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
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 prevedi 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 del bilanciatore del carico delle applicazioni interno.
Per gestire la risorsa subnet solo proxy richiesta dai bilanciatori del carico delle applicazioni interni, consulta Subnet solo proxy per i bilanciatori del carico delle applicazioni interni.