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

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

Réponse parfaite.
hekevintran
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.