Este tópico mostra como usar redirecionamentos do mapa de URLs para redirecionar todos os pedidos do balanceador de carga de aplicações internos de HTTP para HTTPS. O exemplo nesta página usa as portas conhecidas 80 (para HTTP) e 443 (para HTTPS). No entanto, não é obrigatório usar estes números de porta específicos. Cada regra de encaminhamento para um Application Load Balancer pode referenciar uma porta única de 1 a 65535.
Para configurar redirecionamentos de HTTP para HTTPS, tem de criar dois balanceadores de carga, um para o tráfego HTTPS e outro para o tráfego HTTP. Cada equilibrador de carga tem a sua própria regra de encaminhamento, proxy de destino e mapa de URLs, mas partilha o mesmo endereço IP. Para o balanceador de carga HTTP, não precisa de configurar um back-end porque o front-end redireciona o tráfego para o back-end do balanceador de carga HTTPS.
A um nível elevado, para redirecionar o tráfego HTTP para HTTPS, tem de fazer o seguinte:
- Crie um balanceador de carga HTTPS interno normal com um endereço IP interno reservado e partilhado.
- Teste o equilibrador de carga para se certificar de que está a funcionar.
Redirecione o tráfego para o balanceador de carga HTTPS.
Para o fazer, tem de criar um balanceador de carga HTTP interno parcial que tenha apenas um front-end. O frontend recebe pedidos e, em seguida, redireciona-os para o balanceador de carga HTTPS através dos seguintes recursos:
- Uma regra de encaminhamento com o mesmo endereço IP interno reservado que o balanceador de carga HTTPS que criou no passo 1
- Um proxy HTTP de destino
- Um mapa de URLs que redireciona o tráfego para o balanceador de carga HTTPS
Conforme mostrado no diagrama seguinte, o balanceador de carga HTTPS é um balanceador de carga normal com os componentes do balanceador de carga de aplicações interno esperados.
O balanceador de carga HTTP tem o mesmo endereço IP que o balanceador de carga HTTPS e uma instrução de redirecionamento no mapa de URLs.
Crie o balanceador de carga HTTPS interno
Para configurar um Application Load Balancer interno regional, siga as instruções para configurar um Application Load Balancer interno.
Se já tiver um Application Load Balancer interno regional em funcionamento, certifique-se de que tem um endereço IP partilhado reservado para a regra de encaminhamento e, em seguida, avance para a secção seguinte, Redirecione o tráfego para o seu balanceador de carga HTTPS.
Para balanceadores de carga de aplicações internos entre regiões, use as instruções em Configure um balanceador de carga de aplicações interno entre regiões com back-ends de grupo de instâncias de VMs para criar dois balanceadores de carga e, em seguida, siga as instruções em Redirecione o tráfego para o seu balanceador de carga HTTPS.
Redirecione o tráfego para o seu balanceador de carga HTTPS
Crie um balanceador de carga de HTTP parcial que tenha o mesmo endereço IP que o balanceador de carga de HTTPS criado no passo anterior. O balanceador de carga parcial redireciona o tráfego da porta 80
para a porta 443
.
Consola
Selecione o tipo de balanceador de carga
Na Google Cloud consola, aceda à página Equilíbrio de carga.
- Clique em Criar equilibrador de carga.
- Em Tipo de balanceador de carga, selecione Balanceador de carga de aplicações (HTTP/HTTPS) e clique em Seguinte.
- Para Público ou interno, selecione Interno e clique em Seguinte.
- Para a Implementação em várias regiões ou numa única região, selecione Melhor para cargas de trabalho regionais e clique em Seguinte.
- Clique em Configurar.
Configuração básica
- Para o nome do balanceador de carga, introduza
l7-ilb-http-redirect
. - Para Região, selecione
us-west1
. - Para Rede, selecione
lb-network
.
Configure o serviço de back-end
- Clique em Configuração de back-end.
- No menu Selecionar serviços de back-end, selecione o serviço de back-end existente
l7-ilb-backend-service
. - Clique em OK.
Configure o mapa de URLs
- Clique em Regras de encaminhamento.
- Para Modo, selecione Regra de anfitrião e caminho avançada.
- Clique em Adicionar regra de anfitrião e caminho.
Defina Hosts como
*
.Para Correspondência de caminhos (correspondências, ações e serviços), introduza o seguinte código:
name: matcher1 defaultUrlRedirect: httpsRedirect: true hostRedirect: IP_ADDRESS:443 redirectResponseCode: PERMANENT_REDIRECT
Certifique-se de que o
l7-ilb-backend-service
é o único serviço de back-end para qualquer anfitrião não correspondente e qualquer caminho não correspondente.
Para ver informações sobre a gestão de tráfego, consulte o artigo Configure a gestão de tráfego para equilibradores de carga de aplicações internos.
Configure o front-end para HTTP
- Clique em Configuração do front-end.
- Defina o nome da regra de encaminhamento como
l7-ilb-forwarding-rule
. - Defina Protocol como
HTTP
. - Defina a Sub-rede como
backend-subnet
. - Defina a Porta para
80
. - No menu Endereço IP, selecione o endereço IP partilhado que foi reservado para a regra de encaminhamento do balanceador de carga HTTPS.
- Clique em Concluído.
Reveja a configuração
- Clique em Rever e finalizar.
- Reveja as definições de configuração do equilibrador de carga.
- Opcional: clique em Código equivalente para ver o pedido da API REST que vai ser usado para criar o equilibrador de carga.
- Clique em Criar.
gcloud
Crie um novo mapa de URLs criando um ficheiro YAML com a configuração de redirecionamento de tráfego. Substitua IP_ADDRESS pelo endereço IP partilhado que foi reservado para a regra de encaminhamento do balanceador de carga 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
Importe o ficheiro YAML para o novo mapa de URLs:
gcloud compute url-maps import l7-ilb-redirect-url-map \ --source=/tmp/url_map.yaml \ --region=us-west1
Crie o proxy de destino do balanceador de carga de HTTP:
gcloud compute target-http-proxies create l7-ilb-http-proxy \ --url-map=l7-ilb-redirect-url-map \ --region=us-west1
Crie uma nova regra de encaminhamento e o endereço IP partilhado:
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
Teste o redirecionamento de tráfego
Estabeleça ligação à VM do cliente.
gcloud compute ssh l7-ilb-client-us-west1-a \ --zone=us-west1-a
Envie um pedido HTTP para IP_ADDRESS na porta
80
e espere um redirecionamento de tráfego.curl -L -k IP_ADDRESS
Veja o exemplo de saída.
Page served from: l7-ilb-backend-w11t
Adicione
-vvv
para ver mais detalhes.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
O que se segue?
Para saber como funcionam os balanceadores de carga de aplicações internos, consulte a Vista geral do balanceador de carga de aplicações interno.
Para gerir o recurso de sub-rede só de proxy exigido pelos balanceadores de carga de aplicações internos, consulte o artigo Sub-rede só de proxy para balanceadores de carga de aplicações internos.