Tengo el equilibrio de carga HTTP / HTTPS configurado en Google Compute Engine con 2 reglas de reenvío globales (HTTP y HTTPS). Cada regla apunta a un servicio de fondo con un protocolo de HTTP.
Quiero http://*
ir a todas las solicitudes https://*
.
A medida que el equilibrador de carga habla con los servicios de fondo a través de HTTP, no creo que pueda obtener nginx en el servicio de fondo para enviar a 301
.
He intentado una docena de pequeños ajustes en Google Compute y todos terminan con Google Compute devolviendo a 502
.
Estoy seguro de que alguien más ha configurado esto antes. Cualquier sugerencia o puntero en la dirección correcta es muy apreciada.
load-balancing
google-compute-engine
Ryan Leckey
fuente
fuente
Respuestas:
Tenemos una configuración similar usando el equilibrador de carga HTTP / HTTPS y logramos forzar HTTPS. No es posible directamente desde el equilibrador de carga, pero puede configurarlo desde su servicio de back-end. El equilibrador de carga de Google Cloud establecerá el encabezado http X-Fordered-Proto con el valor http o https. Verifica este encabezado en su servicio de back-end (en nuestro caso, Barniz, pero esto también podría hacerse en Nginx) y si el valor es http, entonces envía un 301.
fuente
if ($http_x_forwarded_proto = "http") {
return 301 https://$host$request_uri;
}
426
encabezado de actualización HTTP en lugar de 301. Lea más: stackoverflow.com/questions/17873247/…Enfrenté este problema hoy y pude resolverlo usando el equilibrio de carga TCP. Si no necesita las opciones de equilibrador de carga específicas de HTTP / HTTPS, quizás pueda usar el equilibrador de carga TCP (sin SSL) para recibir tráfico tanto en el puerto 80 como en el 443. Para el tráfico desde el puerto 80, puede enviar de vuelta 301.
fuente