Desativar SSL para determinados caminhos no Nginx

11

Eu tenho um site em que desejo que todas as solicitações sejam feitas com HTTPS, exceto as solicitações para URLs com caminhos que começam com /foo/. Como faço para configurar isso no Nginx?

No momento, eu executo todos os pedidos com 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
fonte
Deseja forçar solicitações nesse caminho para não usar SSL ou permitir que solicitações não usem SSL?
Shane Madden
Desejo permitir que solicitações nesse caminho usem HTTP e HTTPS.
23412 hekevintran

Respostas:

15

Adicione uma segunda entrada de servidor para a porta 80 não SSL, servindo /foo/*e redirecionando todo o resto para a URL HTTPS.

Talvez algo assim ?:

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
fonte
Resposta perfeita.
23412 hekevintran