Wyłącz SSL dla niektórych ścieżek w Nginx


11

Mam witrynę internetową, w której chcę, aby wszystkie żądania były wykonywane za pomocą HTTPS, z wyjątkiem żądań do adresów URL ze ścieżkami, które zaczynają się od /foo/. Jak skonfigurować to w Nginx?

Obecnie uruchamiam wszystkie żądania za pomocą protokołu 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;
        ...
    }
}

Czy chcesz zmusić żądania do tej ścieżki, aby nie używały protokołu SSL, czy zezwalać na żądania nieużywania protokołu SSL?
Shane Madden

Chcę zezwolić na żądania do tej ścieżki, aby korzystać z HTTP i HTTPS.
hekevintran

Odpowiedzi:


15

Dodaj drugi wpis serwera dla non-ssl, port 80, obsługujący /foo/*i przekierowujący wszystko inne do adresu URL HTTPS.

Może coś takiego ?:

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

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

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

Idealna odpowiedź.
hekevintran
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.