nginx: excluir subcarpetas del cifrado SSL

nginx: excluir subcarpetas del cifrado SSL

He configurado mi servidor nginx de esta manera:

server {
   listen 443;
   ssl on;
   ssl_certificate /etc/ssl/certs/example.com.crt;
   ssl_certificate_key     /etc/ssl/private/example.com.key;
   server_name example.com;
   ... other things down here..
}

¿Cómo puedo excluir directorios de SSL? Por ejemplo, en /static/tour tengo un recorrido que explica la aplicación web y no es necesario cifrarlo.

Sistema operativo: Ubuntu 10.04

Respuesta1

Creo que querrás configurar otra configuración de servidor para escuchar en el puerto 80, dirigido a la misma raíz del documento (y asegurarte de que la aplicación fuerce SSL o no SSL dependiendo de la URL a la que se accede, para que el usuario pueda). No simplemente elimine la 'S' de HTTPS), o use algo como esto:http://ariejan.net/2011/10/22/cambiar-automáticamente-entre-ssl-y-no-ssl-con-nginx-unicorn-rails

Respuesta2

Esto no será posible. Una solicitud SSL está cifrada, lo que significa que el servidor ni siquiera puede saber cómo se ve el URI hasta que haya descifrado la solicitud. No hay forma de decirle al cliente que debe enviar solicitudes para un determinado subdirectorio utilizando un protocolo que no sea SSL.

Como dijo Demelziraptor, puedes configurar dos vhosts, uno con SSL en el puerto 443 y otro sin SSL en el puerto 80.

Puede configurar fácilmente reglas de reescritura para que cualquier solicitud /static/touren el host virtual SSL provoque una redirección a la misma página en el host virtual no SSL y viceversa en el host virtual no SSL para redirigir nuevamente al host virtual SSL.

información relacionada