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

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

Resposta perfeita.
23412 hekevintran
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.