Estoy usando un equilibrador de carga Rackspace que me permite configurar mi clave / pem ssl dentro del panel de administración. Todo funciona bien, puedo usar los protocolos http y https. Pero si trato de redirigir http a https usando:
server{
listen *:80;
server_name mydomain.com www.mydomain.com;
rewrite ^ https://mydomain.com$request_uri? permanent;
... obtengo un bucle de redireccionamiento. Me doy cuenta de que no estoy escuchando el puerto 443, pero eso es porque el equilibrador de carga lo manejó por mí. También intenté envolver la reescritura en if ($scheme ~* http){
vano.
La otra parte de mi pregunta es que me gustaría eliminar www de la url, ¿puedo hacer esto con una sola reescritura? ¿No debería la reescritura anterior ocuparse de esto también?
¡Gracias por tu ayuda!
nginx
load-balancing
jwerre
fuente
fuente
Respuestas:
sciurus es correcto en que los Balanceadores de carga en la nube de Rackspace establecen X-Fordered-Proto en https cuando SSL se descarga en el equilibrador de carga. Para evitar un bucle de redireccionamiento en nginx, debe poder agregar lo siguiente a la
location
sección en la configuración de vhost:Esto debería evitar el bucle de redireccionamiento infinito mientras redirige las solicitudes que no son https a https.
fuente
Mediante el uso de Nginx incorporado en las variables del servidor
$request_uri
y$server_name
se puede hacer esto sin el uso de expresiones regulares en absoluto. Agregue lo siguiente allocation
bloque de su servidor y listo:Esto supone que su equilibrador de carga está enviando el
$http_x_forwarded_proto
encabezado junto con la solicitud a su (s) instancia (s) de fondo. Otros encabezados comunes incluyen$http_x_forwarded_scheme
y también just$scheme
.Puede encontrar más información en la documentación de nginx Pitfalls and Common Mistakes : https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/#taxing-rewrites
fuente
$host
lugar de$server_name
El equilibrador de carga siempre te habla a través de http. Lo que está pasando es
Los pasos 2-4 siguen repitiéndose hasta que el navegador detecta el bucle de redireccionamiento y se da por vencido.
EDITAR: Para resolver esto, solo realice la reescritura cuando el encabezado X-Fordered-Proto esté configurado en http. Ese encabezado es cómo el equilibrador de carga de Rackspace le dice a su servidor web el protocolo a través del cual recibió la solicitud.
fuente