Deshabilitar SSL para ciertas rutas en Nginx

11

Tengo un sitio web donde quiero que todas las solicitudes se realicen con HTTPS, excepto las solicitudes de URL con rutas que comienzan con /foo/. ¿Cómo configuro esto en Nginx?

En este momento ejecuto todas las solicitudes con SSL:

server {
    listen 443;

    ssl on;
    ssl_certificate /home/admin/ssl/ssl.crt;
    ssl_certificate_key /home/admin/ssl/ssl.key;

    server_name www.mydomain.com;

    location / {
        proxy_pass http://localhost:8000;
        ...
    }
}
Hekevintran
fuente
¿Desea forzar las solicitudes a esa ruta para que no usen SSL o permitir que las solicitudes no usen SSL?
Shane Madden
Quiero permitir que las solicitudes a esa ruta usen HTTP y HTTPS.
hekevintran

Respuestas:

15

Agregue una segunda entrada de servidor para no SSL, puerto 80, sirviendo /foo/*y redirigiendo todo lo demás a la URL HTTPS.

¿Quizás algo como esto ?:

server {
    listen      80;
    server_name www.example.com;

    location ~ ^/(foo|foo/.*)$ {
        proxy_pass http://localhost:8000;
        ... 
    }

    location / {
        rewrite  ^ https://$server_name$request_uri? permanent;
    }
}
Dave Forgac
fuente
Respuesta perfecta.
hekevintran