![¿Cómo se puede redirigir de HTTP a HTTPS cuando IAP está configurado con GCP Load Balancers?](https://rvso.com/image/760611/%C2%BFC%C3%B3mo%20se%20puede%20redirigir%20de%20HTTP%20a%20HTTPS%20cuando%20IAP%20est%C3%A1%20configurado%20con%20GCP%20Load%20Balancers%3F.png)
Actualmente tengo un sitio web alojado en Google Compute Engine que está autenticado con Identity-Aware-Proxy que se encuentra detrás de un equilibrador de carga. Todo esto funciona muy bien en https, pero quería asegurarme de que http redireccione a https ya que actualmente solo responde con un 404.
Entonces, seguíhttps://cloud.google.com/load-balancing/docs/https/setting-up-http-https-redirectque le indica que configure un segundo equilibrador de carga para redirigir el tráfico http a https.
Sin embargo, el problema es que después de seguir estas instrucciones, cuando buscohttp://mi-sitio-web.comObtuve el siguiente error:
¡¡Error 403 (Prohibido)!!1
- Eso es un error.
Su cliente no tiene permiso para obtener URL de este servidor. Eso es todo lo que sabemos.
Aunque el equilibrador de carga http está configurado con un redireccionamiento 301 - Redireccionamiento de ruta completa movido permanentemente, en la pestaña de red de herramientas de desarrollador del navegador no se produce ningún redireccionamiento. Simplemente responde de inmediato con el 403. La URL también permanece con el esquema http://.
Para resumir, así es como se ve mi configuración:
Balanceador de carga HTTPS externo
- Frontend: HTTPS, IP estática, solo HTTPS
- Backend: Identity-Aware-Proxy (autenticación de correo electrónico a través de Identity Platform) -> grupo de instancias de Compute Engine
Balanceador de carga HTTP externo
- Frontend: HTTP, IP estática (igual que el balanceador de carga HTTPS anterior)
- Servidor: Ninguno
- Reglas de host y ruta:
- Modo:Regla avanzada de ruta y host (redireccionamiento de URL, reescritura de URL)
- Acción:Redirigir al cliente a un host/ruta diferente
- Redirección de host: https://mi-sitio-web.com
- Valor de ruta:*
- Código de respuesta de redireccionamiento:301 Movido Permanentemente
- Redirección HTTPS:Activado
¡Cualquier idea sobre cómo solucionar este problema y no obtener el 403 sería muy apreciada!
Respuesta1
La forma en que lo describisteparece que tienes un problema con el mapa de URLporque puedes acceder a la http
versión de tu sitio.
Para estar absolutamente seguro, verifique dos veces (ocrear nuevo) mapa de URL con gcloud
comando:
gcloud compute url-maps describe web-map-http
creationTimestamp: '2020-12-02T03:18:27.053-08:00'
defaultUrlRedirect:
httpsRedirect: true
redirectResponseCode: MOVED_PERMANENTLY_DEFAULT
fingerprint: KU2hPu1ao=
id: '50586028237895404'
kind: compute#urlMap
name: web-map-http
selfLink: https://www.googleapis.com/compute/v1/projects/xxxxx/global/urlMaps/web-map-http
Cuando tengas tu mapa de URL listo, crea un proxy de destino:
gcloud compute target-http-proxies create http-lb-proxy \
--url-map=web-map-http \
--global
resultado:
gcloud compute target-http-proxies describe http-lb-proxy
creationTimestamp: '2020-12-02T03:19:39.090-08:00'
fingerprint: lgJkIY8E=
id: '3781119498457764'
kind: compute#targetHttpProxy
name: http-lb-proxy
selfLink: https://www.googleapis.com/compute/v1/projects/xxxx/global/targetHttpProxies/http-lb-proxy
urlMap: https://www.googleapis.com/compute/v1/projects/xxxx/global/urlMaps/web-map-http
y una regla de reenvío:
gcloud compute forwarding-rules create http-content-rule \
--address=lb-ipv4-1 \ # Same IP address used for HTTPS load balancer
--global \
--target-http-proxy=http-lb-proxy \
--ports=80
que debería verse así:
gcloud compute forwarding-rules describe http-content-rule --global
IPAddress: 34.107.123.141
IPProtocol: TCP
creationTimestamp: '2020-12-02T03:22:38.132-08:00'
description: ''
fingerprint: L1vA0Ik9Y=
id: '888330202637841'
kind: compute#forwardingRule
loadBalancingScheme: EXTERNAL
name: http-content-rule
networkTier: PREMIUM
portRange: 80-80
selfLink: https://www.googleapis.com/compute/v1/projects/xxxx/global/forwardingRules/http-content-rule
target: https://www.googleapis.com/compute/v1/projects/xxxx/global/targetHttpProxies/http-lb-proxy
Asegúrese de utilizar la misma IP pública para los LB HTTP y HTTPS. Verifique las reglas del firewall si el tráfico entrante no se bloquea.
Si hace todo correctamente, debería obtener el mismo curl
resultado que se presenta en el ejemplo.