"Nginx": enlace de HTTP a HTTPS redirigido @ 20210228

Descripción del problema

Desde el uso a gran escala de HTTPS, todo el acceso HTTP debe redirigirse a sitios HTTPS. De lo contrario, el cliente solo ingresará el nombre de dominio y muchos navegadores usan el protocolo HTTP de forma predeterminada. Si no brindamos acceso HTTP y no redireccionamos, el cliente verá una página en blanco (no disponible) y el cliente pensará que nuestro sitio tiene El problema, después de todo, ¿dónde sabe el cliente qué es HTTP y qué es HTTPS?

Por lo tanto, necesitamos redirigir las solicitudes HTTP a sitios HTTPS. Por supuesto, este tipo de redirección es generalmente para solicitudes GET, y no es necesario que sea complicado redirigir solicitudes HTTP Post a solicitudes HTTPS Post, por lo que no discutimos estos problemas y hablaremos de ellos más adelante.

Esta nota registrará: En Nginx, cómo redirigir solicitudes HTTP a solicitudes HTTPS y escribir prácticas comunes y convenientes.

solución

Plan uno, plan convencional

La solución convencional es agregar redireccionamientos para cada sitio, y la configuración es aproximadamente la siguiente estructura:

servidor { 
    escuchar 80; 
    nombre_servidor http.example.com; 
    reescribir ^ (. *) https: // $ nombre_servidor $ 1 permanente; 
} 

servidor { 
    nombre_servidor https.example.com; 
    escuchar 443 ssl; 
    
    ssl_certificate / ruta / a / pem; 
    ssl_certificate_key / ruta / a / clave; 
    
    ubicación / {} 
}

Sin embargo, el mayor problema con este método es: para agregar redireccionamientos HTTP para cada nombre de dominio (como la configuración del primer servidor {}), ¿hay alguna forma de "hacerlo bien de una vez por todas"? Eso debe tener:

Solución dos, maneje todas las redirecciones HTTP

A través de la siguiente configuración, no es necesario agregar la configuración HTTP para el nombre de dominio en el futuro.

servidor { 
    escucha 80 servidor_predeterminado ; 

    nombre del servidor _; 

    return 301 https: // $ host $ request_uri; 
}

Explicación: Debido a la existencia de default_server, esos nombres de dominio HTTP no configurados coincidirán con el bloque del servidor {}, y luego el retorno 301 será redirigido al sitio HTTPS correspondiente.

referencias

Módulo ngx_http_rewrite_module
rewrite - ¿Cuál es la diferencia entre las variables de Nginx $ host, $ http_host y $ server_name? - Error del servidor
Redirigir HTTP a HTTPS en Nginx | Servidores para piratas informáticos

Supongo que te gusta

Origin blog.csdn.net/u013670453/article/details/114207947
Recomendado
Clasificación