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 de aplicaciones HTTPS
Si vas a crear un balanceador de carga de aplicaciones HTTPS, puedes usar laGoogle Cloud consola para configurar el redireccionamiento de HTTP a HTTPS.
Cuando crees el frontend del balanceador de carga, sigue estos pasos:
- En la Google Cloud consola, ve a la página de configuración del balanceador de carga.
Ve a Balanceo de carga (crear balanceador de carga de aplicación externo global).
- En Load balancer name (Nombre del balanceador de carga), introduce un nombre.
- Haz clic en Configuración de frontend.
- En Protocol (Protocolo), selecciona HTTPS (includes HTTP/2) (HTTPS [incluye HTTP/2]).
- En Dirección IP, haz clic en Crear dirección IP. Introduce un nombre para la nueva dirección IP estática y haz clic en Reservar.
- En Certificate (Certificado), selecciona un certificado SSL.
- Para crear la redirección, marca la casilla Habilitar redirección de HTTP a HTTPS.
- Haz clic en Listo.
- Completa el backend y otras configuraciones necesarias.
- Haz clic en Crear.
Para poder seleccionar la casilla, debes elegir el protocolo HTTPS y usar una dirección IP reservada (no efímera).

En función del tipo de backend, siga las instrucciones de la consola que se indican en una de las siguientes guías para completar la configuración: Google Cloud
- Backend de Compute Engine
- Segmento de backend
- Backend de Cloud Run, App Engine o Cloud Run Functions
Si marca la casilla Habilitar redirección de HTTP a HTTPS, se creará automáticamente un balanceador de carga HTTP parcial adicional que consta de un mapa de URLs, una regla de reenvío y un proxy HTTP de destino. 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. Usa 301 Moved Permanently
como código de respuesta de redirección predeterminado.
Una vez creado el balanceador de carga HTTPS, puedes ver el balanceador de carga HTTP parcial en la lista de balanceadores de carga, con el sufijo -redirect. Para probar la configuración, siga los pasos que se indican en Probar la redirección de HTTP a HTTPS.
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.
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
- Crea un archivo YAML
/tmp/web-map-http.yaml
. En este ejemplo se usa MOVED_PERMANENTLY_DEFAULT como código de respuesta. - Valida el mapa de URLs.
- 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
. - 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:
- Crea un proxy HTTP de destino o actualiza uno que ya tengas con
web-map-http
como mapa de URLs. - Crea una regla de reenvío para dirigir las solicitudes entrantes al proxy. La marca
--address
especificalb-ipv4-1
, que es la misma dirección IP que se usa para el balanceador de carga HTTPS externo.
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¶meter2=value2 expectedOutputUrl: https://example.com/test/?parameter1=value1¶meter2=value2 expectedRedirectResponseCode: 301
gcloud compute url-maps validate --source /tmp/web-map-http.yaml
Si las pruebas se superan y el comando muestra un mensaje de éxito, guarda los cambios en el mapa de URLs.
gcloud compute url-maps import web-map-http \ --source /tmp/web-map-http.yaml \ --global
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.
gcloud compute url-maps describe web-map-http
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/global/urlMaps/web-map-http
gcloud compute target-http-proxies create http-lb-proxy \ --url-map=web-map-http \ --global
gcloud compute target-http-proxies update http-lb-proxy \ --url-map=web-map-http \ --global
gcloud compute forwarding-rules create http-content-rule \ --load-balancing-scheme=EXTERNAL_MANAGED \ --address=lb-ipv4-1 \ --network-tier=PREMIUM \ --global \ --target-http-proxy=http-lb-proxy \ --ports=80
Añadir un encabezado HSTS personalizado
Cuando añades el encabezado HTTP Strict-Transport-Security
al servicio de backend de tu balanceador de carga HTTPS, el balanceador de carga envía el encabezado personalizado al cliente para que, la próxima vez que el cliente intente acceder a la URL a través de HTTP, el navegador redirija la solicitud. Los ajustes del encabezado son los siguientes:
- Nombre del encabezado:
Strict-Transport-Security
- Valor del encabezado:
max-age=31536000; includeSubDomains; preload
Para añadir el encabezado personalizado a la configuración del servicio de backend, usa la marca --custom-response-header
.
gcloud compute backend-services update BACKEND_SERVICE_NAME_LB1 \ --global \ --custom-response-header='Strict-Transport-Security:max-age=31536000; includeSubDomains; preload'
Para obtener más información, consulta Crear encabezados personalizados.
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)"
--global
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
Procedimientos relacionados
Para usar Terraform, consulta la pestaña de redirección de HTTP a HTTPS.
En el caso de GKE, consulta la documentación sobre redirecciones de HTTP a HTTPS en GKE.
Para los balanceadores de carga de aplicaciones internos, consulta Configurar la redirección de HTTP a HTTPS para balanceadores de carga de aplicaciones internos.
Para ver otros tipos de redirecciones, consulta Redirecciones de URLs.