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;
        ...
    }
}

¿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;
    }
}

Respuesta perfecta.
hekevintran
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.