Como eu digo ao Nginx para pular a reescrita de algum local específico?

2

Isso é o que eu faço:

Como o /api do sistema tem problemas com HTTPS, tenho que atendê-lo em HTTP. O resto eu os forço a estar em HTTPS. No entanto, no meu sistema django, redirecionamentos me dá de volta http. Pode ter a ver com o django, mas por agora, eu quero reescrever todos os HTTP para HTTPs. Eu normalmente colocaria isso dentro do bloco de servidor 80 , mas eu quero manter /api como HTTP.

Como posso fazer isso usando reescrita?

Obrigado.

    server {
        listen 80;
        server_name localhost 127.0.0.1;
        server_name_in_redirect off;
        client_max_body_size 100M;

        location /api {
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

            proxy_pass http://localhost:5050;
            proxy_redirect default;
        }

    }
    server {

        listen 443;
        ssl on;

        location /app1 {
         ....
         proxy_pass http://localhost:1234;
        }

        location /app2 {
         ... 
         proxy_pass http://localhost:5678;
        }
}
    
por CppLearner 15.08.2012 / 05:36

1 resposta

0

Ah. Eu apenas tentei algo e parece que está funcionando.

if ($request_uri !~ (/api)){
    rewrite     ^(.*)   https://$http_host$1 permanent;
}

e deixe todo o restante no bloco 80 intacto ... Não vou checar minha resposta ...

    
por 15.08.2012 / 05:50

Tags