Désactiver SSL pour certains chemins dans Nginx

11

J'ai un site Web où je veux que toutes les demandes soient effectuées avec HTTPS à l'exception des demandes vers des URL avec des chemins commençant par /foo/. Comment configurer cela dans Nginx?

En ce moment, je lance toutes les demandes avec 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
la source
Voulez-vous forcer les demandes sur ce chemin à ne pas utiliser SSL ou autoriser les demandes à ne pas utiliser SSL?
Shane Madden
Je souhaite autoriser les requêtes vers ce chemin à utiliser HTTP et HTTPS.
hekevintran

Réponses:

15

Ajoutez une deuxième entrée de serveur pour non ssl, port 80, servant /foo/*et redirigeant tout le reste vers l'URL HTTPS.

Peut-être quelque chose comme ça?:

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
la source
Réponse parfaite.
hekevintran