En este tema, se muestra cómo usar redireccionamientos de mapa de URL para redireccionar todas las solicitudes del balanceador de cargas de aplicaciones interno de HTTP a HTTPS. En el ejemplo de esta página, se usan los puertos conocidos 80 (para HTTP) y 443 (para HTTPS). Sin embargo, no es necesario que uses estos números de puerto específicos. Cada regla de reenvío para un balanceador de cargas de aplicaciones puede hacer referencia a un puerto único del 1 al 65535.
Si quieres configurar redireccionamientos de HTTP a HTTPS, debes crear dos balanceadores de cargas: uno para el tráfico de HTTPS y otro para el tráfico de HTTP. Cada balanceador de cargas tiene su propia regla de reenvío, proxy de destino y mapa de URL, pero comparten la misma dirección IP. Para el balanceador de cargas de HTTP, no necesitas configurar un backend porque el frontend redirecciona el tráfico al backend del balanceador de cargas de HTTPS.
En un alto nivel, para redireccionar el tráfico de HTTP a HTTPS, debes hacer lo siguiente:
- Crea un balanceador de cargas de HTTPS interno normal con una dirección IP interna reservada y compartida.
- Prueba el balanceador de cargas de HTTPS para asegurarte de que funcione.
Redirecciona el tráfico al balanceador de cargas de HTTPS.
Para hacerlo, debes crear un balanceador de cargas de HTTP interno parcial que solo tenga un frontend. El frontend recibe solicitudes y, luego, las redirecciona al balanceador de cargas de HTTPS mediante los siguientes recursos:
- Una regla de reenvío con la misma dirección IP interna reservada que el balanceador de cargas de HTTPS que creaste en el paso 1
- Un proxy HTTP de destino
- Un mapa de URL que redirecciona el tráfico al balanceador de cargas de HTTPS
Como se muestra en el siguiente diagrama, el balanceador de cargas de HTTPS es un balanceador de cargas normal con los componentes del balanceador de cargas de aplicaciones interno esperados.
El balanceador de cargas de HTTP tiene la misma dirección IP que el balanceador de cargas de HTTPS y una instrucción de redireccionamiento en el mapa de URL.
Crea el balanceador de cargas de HTTPS interno
Para configurar un balanceador de cargas de aplicaciones interno regional, usa las instrucciones en Configura un balanceador de cargas de aplicaciones interno.
Si ya tienes un balanceador de cargas interno de aplicaciones interno regional, asegúrate de que tenga una dirección IP compartida y reservada para la regla de reenvío y, luego, ve a siguiente sección, Redirecciona el tráfico a tu balanceador de cargas de HTTPS.
Para balanceadores de cargas internos de aplicaciones entre regiones (Versión preliminar), usa las instrucciones en laConfigura un balanceador de cargas de aplicaciones interno entre regiones con backends de grupos de instancias de VM para crear dos balanceadores de cargas y, luego, seguir las instrucciones en Redirecciona el tráfico al balanceador de cargas de HTTPS.
Redirecciona el tráfico al balanceador de cargas de HTTPS
Crea un balanceador de cargas HTTP parcial que tenga la misma dirección IP que el balanceador de cargas HTTPS
creado en el paso anterior. El balanceador de cargas parcial redirecciona
el tráfico del puerto 80
al puerto 443
.
Console
Inicia la configuración
En la consola de Google Cloud, ve a la página Balanceo de cargas.
- Haz clic en Crear balanceador de cargas.
- En Tipo de balanceador de cargas, selecciona Balanceador de cargas de aplicaciones (HTTP/HTTPS) y haz clic en Siguiente.
- En Orientado al público o interno, selecciona Interno y haz clic en Siguiente.
- En Implementación entre regiones o de una sola región, selecciona Ideal para cargas de trabajo regionales y haz clic en Siguiente.
- Haz clic en Configurar.
Configuración básica
- Para el Nombre del balanceador de cargas, ingresa
l7-ilb-http-redirect
. - En Región, selecciona
us-west1
. - En Red, selecciona
lb-network
.
Configura el servicio de backend
- Haz clic en Configuración de backend.
- En el menú Seleccionar servicios de backend, selecciona el servicio de backend existente
l7-ilb-backend-service
. - Haz clic en Aceptar.
Configura el mapa de URL
- Haga clic en Reglas de enrutamiento.
- En Modo, selecciona Regla sencilla de host y ruta de acceso.
- Haz clic en Agregar regla de host y ruta de acceso.
Establece Hosts como
*
.En Comparador de rutas de acceso (coincidencias, acciones y servicios), ingresa el siguiente código:
name: matcher1 defaultUrlRedirect: httpsRedirect: true hostRedirect: IP_ADDRESS:443 redirectResponseCode: PERMANENT_REDIRECT
Asegúrate de que
l7-ilb-backend-service
sea el único servicio de backend para los hosts y rutas de acceso no coincidentes.
A fin de obtener información sobre la administración del tráfico, consulta Configura la administración del tráfico para balanceadores de cargas de aplicaciones internos.
Configura el frontend para HTTP
- Haz clic en Configuración de frontend.
- Configura el nombre de la regla de reenvío como
l7-ilb-forwarding-rule
. - Establece el Protocolo en
HTTP
. - Establece Subred en
backend-subnet
. - Configura el Puerto en
80
. - En el menú Dirección IP, selecciona la IP compartida que se reservó para la regla de reenvío del balanceador de cargas de HTTPS.
- Haz clic en Listo.
Revisa la configuración
- Haz clic en Revisar y finalizar.
- Revisa la configuración del balanceador de cargas.
- Opcional: Haz clic en Código equivalente a fin de ver la solicitud a la API de REST que se usará para crear el balanceador de cargas.
- Haz clic en Crear.
gcloud
Para crear un nuevo mapa de URL, crea un archivo YAML con la configuración de redireccionamiento del tráfico: Reemplaza IP_ADDRESS por la dirección IP compartida que se reservó para la regla de reenvío del balanceador de cargas de 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 el archivo YAML a un mapa de URL nuevo:
gcloud compute url-maps import l7-ilb-redirect-url-map \ --source=/tmp/url_map.yaml \ --region=us-west1
Crea el proxy de destino del balanceador de cargas de HTTP:
gcloud compute target-http-proxies create l7-ilb-http-proxy \ --url-map=l7-ilb-redirect-url-map \ --region=us-west1
Crea una regla de reenvío nueva y la dirección IP compartida:
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
Prueba el redireccionamiento del tráfico
Conéctate a la VM cliente.
gcloud compute ssh l7-ilb-client-us-west1-a \ --zone=us-west1-a
Envía una solicitud HTTP a IP_ADDRESS en el puerto
80
y espera un redireccionamiento del tráfico.curl -L -k IP_ADDRESS
Consulta el resultado de muestra.
Page served from: l7-ilb-backend-w11t
Agrega
-vvv
para ver más detalles.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
¿Qué sigue?
Si deseas obtener información sobre cómo funcionan los balanceadores de cargas de aplicaciones internos, consulta Descripción general del balanceador de cargas de aplicaciones interno.
Si quieres administrar el recurso de subred de solo proxy que requieren los balanceadores de cargas de aplicaciones internos, consulta Subred de solo proxy para balanceadores de cargas de aplicaciones internos.