En esta página, se muestra cómo configurar un redireccionamiento de HTTP a HTTPS para el balanceador de cargas de aplicaciones externo regional. Esta página es solo para un balanceador de cargas de aplicaciones externo regional. Si usas un balanceador de cargas en un modo diferente, consulta una de las siguientes páginas:
En este ejemplo, se muestra cómo usar redireccionamientos de mapa de URL para redireccionar todas las solicitudes de HTTP a HTTPS. En este ejemplo, se muestra cómo configurar redireccionamientos mediante 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.
HTTPS usa TLS (SSL) para encriptar solicitudes y respuestas HTTP, lo que lo hace más seguro y protegido. Un sitio web que usa HTTPS tiene https://
al comienzo de su URL en lugar de http://
.
Para balanceadores de cargas HTTPS nuevos
Los balanceadores de cargas de aplicaciones externos regionales no admiten la creación de redireccionamientos de HTTP a HTTPS mientras se crea un balanceador de cargas nuevo. Primero, deberás usar las instrucciones de la Guía de backend de Compute Engine para crear un balanceador de cargas nuevo. Luego, puedes usar las instrucciones de la siguiente sección para configurar un redireccionamiento para todas las solicitudes de HTTP a HTTPS.
En este procedimiento, se supone que ya tienes un balanceador de cargas de HTTPS externo que entrega tráfico HTTPS en el puerto 443.
Para balanceadores de cargas existentes
Si ya tienes un balanceador de cargas de aplicaciones HTTPS (llamado LB1 aquí) que entrega tráfico HTTPS en el puerto 443, debes crear unHTTP parcial. Balanceador de cargas de aplicaciones (llamado LB2 aquí) con la siguiente configuración:
- La misma dirección IP de frontend que usa LB1
- Un redireccionamiento configurado en el mapa de URL
Este balanceador de cargas HTTP parcial usa la misma dirección IP que tu balanceador de cargas HTTPS y redirecciona las solicitudes HTTP al frontend de HTTPS del balanceador de cargas.
Esta arquitectura se muestra en el siguiente diagrama.
Redirecciona el tráfico al balanceador de cargas de HTTPS
Después de verificar que el balanceador de cargas de HTTPS (LB1) funciona, puedes crear el balanceador de cargas de HTTP parcial (LB2) parcial con su frontend configurado para redireccionar el tráfico a LB1.
En este ejemplo, se usa el código de respuesta 301. En cambio, puedes usar un código de respuesta diferente.
Para configurar el redireccionamiento con gcloud
, debes importar un archivo YAML y asegurarte de que tu proxy HTTP de destino apunte al mapa de URL que redirecciona el tráfico. Si usas la consola de Google Cloud, tú lo controlas.
La consola de Google Cloud no admite los balanceadores de cargas de aplicaciones externos regionales.
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 URL del balanceador de cargas HTTP mediante la importación del archivo YAML. El nombre de este mapa de URL es
web-map-http
. - Verifica que el mapa de URL esté actualizado. El mapa de URL del balanceador de cargas de HTTP debería ser similar al siguiente:
- Crea un proxy HTTP de destino nuevo o actualiza uno existente con
web-map-http
como el mapa de URL. - Crea una regla de reenvío global para enrutar 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 cargas de 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 actualizas un mapa de URL existente, aparecerá el siguiente mensaje:
Url Map [web-map-http] will be overwritten. Do you want to continue (Y/n)?
Para continuar, presiona Y.
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
Prueba el redireccionamiento de HTTP a HTTPS
Ten en cuenta la dirección IP reservada que usas para ambos balanceadores de cargas.
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/
se redirecciona a https://34.98.77.106/
.
Después de unos minutos, puedes ejecutar el siguiente comando curl
para probarla.
curl -v http://hostname.com
Resultado de muestra:
* 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 redireccionamiento de HTTP a HTTPS.
Para GKE, consulta los redireccionamientos de HTTP a HTTPS en la documentación de GKE.
Para los balanceadores de cargas de aplicaciones internos, consulta Configura el redireccionamiento de HTTP a HTTPS para balanceadores de cargas de aplicaciones internos.
Para otros tipos de redireccionamientos, consulta Redireccionamientos de URL.