Disabilita SSL per alcuni percorsi in Nginx


11

Ho un sito Web in cui desidero che tutte le richieste vengano eseguite con HTTPS ad eccezione delle richieste da url con percorsi che iniziano con /foo/. Come posso configurarlo in Nginx?

In questo momento eseguo tutte le richieste 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;
        ...
    }
}

Vuoi forzare le richieste a quel percorso di non utilizzare SSL o consentire alle richieste di non utilizzare SSL?
Shane Madden,

Voglio consentire alle richieste su quel percorso di utilizzare HTTP e HTTPS.
Hekevintran,

Risposte:


15

Aggiungi una seconda voce del server per non ssl, porta 80, che serve /foo/*e reindirizza tutto il resto all'URL HTTPS.

Forse qualcosa del genere ?:

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

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

    location / {
        rewrite  ^ https://$server_name$request_uri? permanent;
    }
}

Risposta perfetta
Hekevintran,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.