Configurar un redireccionamiento de HTTP a HTTPS para balanceadores de carga de aplicaciones externos regionales

En esta página se explica cómo configurar una redirección de HTTP a HTTPS para el balanceador de carga de aplicaciones externo regional. Esta página solo se aplica a los balanceadores de carga de aplicación externos regionales. Si usas un balanceador de carga en otro modo, consulta una de las siguientes páginas:

En este ejemplo se muestra cómo usar redirecciones de mapa de URLs para redirigir todas las solicitudes de HTTP a HTTPS. En este ejemplo se muestra cómo configurar redirecciones mediante los puertos conocidos 80 (para HTTP) y 443 (para HTTPS). Sin embargo, no es obligatorio usar estos números de puerto específicos. Cada regla de reenvío de un balanceador de carga de aplicaciones puede hacer referencia a un único puerto del intervalo 1-65535.

HTTPS usa TLS (SSL) para cifrar las solicitudes y respuestas HTTP, lo que lo hace más seguro. Un sitio web que usa HTTPS tiene https:// al principio de su URL en lugar de http://.

Para los nuevos balanceadores de carga HTTPS

Los balanceadores de carga de aplicaciones externos regionales no admiten la creación de redirecciones de HTTP a HTTPS al crear un balanceador de carga. Primero, debes seguir las instrucciones de la guía de backend de Compute Engine para crear un balanceador de carga. A continuación, puedes seguir las instrucciones de la siguiente sección para configurar una redirección de todas las solicitudes de HTTP a HTTPS.

En este procedimiento se da por hecho que ya tienes un balanceador de carga HTTPS externo que sirve tráfico HTTPS en el puerto 443.

Para balanceadores de carga ya creados

Si ya tienes un balanceador de carga de aplicaciones HTTPS (llamado LB1) que sirve tráfico HTTPS en el puerto 443, debes crear un balanceador de carga de aplicaciones HTTP parcial (llamado LB2) con la siguiente configuración:

  • La misma dirección IP de frontend que usa LB1
  • Una redirección configurada en el mapa de URLs

Este balanceador de carga HTTP parcial usa la misma dirección IP que tu balanceador de carga HTTPS y redirige las solicitudes HTTP al frontend HTTPS de tu balanceador de carga.

Esta arquitectura se muestra en el siguiente diagrama.

Arquitectura de configuración de redireccionamiento de HTTP a HTTPS.
Imagen 2. Arquitectura de configuración del redireccionamiento de HTTP a HTTPS (haz clic para ampliar).

Redirigir el tráfico a tu balanceador de carga HTTPS

Una vez que hayas verificado que tu balanceador de carga HTTPS (LB1) funciona, puedes crear el balanceador de carga HTTP parcial (LB2) con su frontend configurado para redirigir el tráfico a LB1.

En este ejemplo se usa el código de respuesta 301. En su lugar, puedes usar otro código de respuesta.

Para configurar la redirección con gcloud, debes importar un archivo YAML y asegurarte de que tu proxy HTTP de destino apunte al mapa de URLs que redirige el tráfico. Si usas la Google Cloud consola, se gestiona automáticamente.

Los balanceadores de carga de aplicación externos regionales no se admiten en la consola de Google Cloud .

gcloud

  1. Crea un archivo YAML /tmp/web-map-http.yaml. En este ejemplo se usa MOVED_PERMANENTLY_DEFAULT como código de respuesta.
  2.        kind: compute#urlMap
           name: web-map-http
           defaultUrlRedirect:
             redirectResponseCode: MOVED_PERMANENTLY_DEFAULT
             httpsRedirect: True
           tests:
           - description: Test with no query parameters
             host: example.com
             path: /test/
             expectedOutputUrl: https://example.com/test/
             expectedRedirectResponseCode: 301
           - description: Test with query parameters
             host: example.com
             path: /test/?parameter1=value1&parameter2=value2
             expectedOutputUrl: https://example.com/test/?parameter1=value1&parameter2=value2
             expectedRedirectResponseCode: 301
           
  3. Crea el mapa de URLs del balanceador de carga HTTP importando el archivo YAML. El nombre de este mapa de URLs es web-map-http.
  4.        gcloud compute url-maps import web-map-http \
               --source /tmp/web-map-http.yaml \
               --region=REGION
           

    Si vas a actualizar un mapa de URLs, aparecerá el siguiente mensaje:

           Url Map [web-map-http] will be overwritten.
    
           Do you want to continue (Y/n)?
           

    Para continuar, pulsa S.

  5. Verifica que el mapa de URLs se haya actualizado. El mapa de URLs de tu balanceador de carga HTTP debería tener un aspecto similar a este:
  6.        gcloud compute url-maps describe web-map-http \
               --region=REGION
           
           creationTimestamp: '2020-03-23T10:53:44.976-07:00'
           defaultUrlRedirect:
             httpsRedirect: true
             redirectResponseCode: MOVED_PERMANENTLY_DEFAULT
           fingerprint: 3A5N_RLrED8=
           id: '2020316695093397831'
           kind: compute#urlMap
           name: web-map-http
           selfLink: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/urlMaps/web-map-http
           
  7. Crea un proxy HTTP de destino o actualiza uno que ya tengas con web-map-http como mapa de URLs.
  8.        gcloud compute target-http-proxies create http-lb-proxy \
               --url-map=web-map-http \
               --region=REGION
           
    O BIEN
            gcloud compute target-http-proxies update http-lb-proxy \
               --url-map=web-map-http \
               --region=REGION
           
  9. Crea una regla de reenvío para dirigir las solicitudes entrantes al proxy. La marca --address especifica lb-ipv4-1, que es la misma dirección IP que se usa para el balanceador de carga HTTPS externo.
  10.        gcloud compute forwarding-rules create http-content-rule \
               --load-balancing-scheme=EXTERNAL_MANAGED \
               --address=lb-ipv4-1 \
               --network-tier=STANDARD \
               --region=REGION \
               --target-http-proxy=http-lb-proxy \
               --target-http-proxy-region=REGION \
               --ports=80
           

Probar el redireccionamiento de HTTP a HTTPS

Anota la dirección IP reservada que estás usando para ambos balanceadores de carga.

gcloud compute addresses describe lb-ipv4-1 
--format="get(address)"
--region=REGION

En este ejemplo, supongamos que la dirección IP reservada es 34.98.77.106. La URL http://34.98.77.106/ redirige a https://34.98.77.106/.

Después de unos minutos, puedes probarlo ejecutando el siguiente comando curl.

curl -v http://hostname.com

Ejemplo de salida:

* Connected to 34.98.77.106 (34.98.77.106) port 80 (#0)
> GET / HTTP/1.1
> Host: hostname.com
> User-Agent: curl/7.64.0
> Accept: */*
>
< HTTP/1.1 301 Moved Permanently
< Cache-Control: private
< Content-Type: text/html; charset=UTF-8
< Referrer-Policy: no-referrer
< Location: https://hostname.com
< Content-Length: 220
< Date: Fri, 30 Jul 2021 21:32:25 GMT
<
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="https://hostname.com">here</A>.
</BODY></HTML>
* Connection #0 to host hostname.com left intact

Siguientes pasos