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.
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. - 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 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.
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
gcloud compute target-http-proxies create http-lb-proxy \ --url-map=web-map-http \ --region=REGION
gcloud compute target-http-proxies update http-lb-proxy \ --url-map=web-map-http \ --region=REGION
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
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.