Deaktivieren Sie SSL für bestimmte Pfade in Nginx

10

Ich habe eine Website, auf der alle Anforderungen mit HTTPS ausgeführt werden sollen, mit Ausnahme von Anforderungen an URLs mit Pfaden, die mit beginnen /foo/. Wie konfiguriere ich das in Nginx?

Im Moment führe ich alle Anfragen mit SSL aus:

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
quelle
Möchten Sie Anforderungen an diesen Pfad zwingen , kein SSL zu verwenden, oder zulassen , dass Anforderungen kein SSL verwenden?
Shane Madden
Ich möchte zulassen, dass Anforderungen an diesen Pfad HTTP und HTTPS verwenden.
Hekevintran

Antworten:

14

Fügen Sie einen zweiten Servereintrag für Nicht-SSL, Port 80, hinzu, der /foo/*alles andere bedient und zur HTTPS-URL umleitet.

Vielleicht so etwas?:

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
quelle
Perfekte Antwort.
Hekevintran