Nginx permite procesar tanto HTTP como HTTPS dentro del mismo server
bloque. Por lo tanto, no tiene que duplicar las directivas para ambos y puede redirigir la ruta que desea proteger
server {
listen 80 default_server;
listen 443 ssl;
... ssl certificate and other configs ...
location /user {
if ($scheme = 'http') {
rewrite ^ https://$http_host$request_uri? permanent;
}
}
... your basic configuration ...
}
Asegúrese de no poner ssl on
línea allí porque romperá HTTP simple.
Opcionalmente, puede redirigir todas las demás solicitudes de HTTPS a HTTP de la misma manera:
if ($scheme = 'https') {
rewrite ^ http://$http_host$request_uri? permanent;
}
ACTUALIZACIÓN : como Alexey Ten señala amablemente en la sección de comentarios, verificar scheme
cada solicitud no es una idea muy brillante. Debe seguir la forma declarativa de configurar su nginx. En este caso, declare dos bloques de servidor con redireccionamientos location
, mueva la lógica común a un archivo separado y include
en ambos. Entonces la respuesta de GruffTech es mejor.