Ignorar cache Nginx ao receber uma solicitação específica

1

Estou usando um cache Nginx para um aplicativo meu. Eu gostaria de ignorar o cache para uma string de solicitação muito específica. Eu pensei que poderia conseguir isso usando algo como o seguinte:

location / {
 if($uri ~ .*(ServerCheck).*) {set $nocache 1; }
 proxy_pass http://127.0.0.1:9001/;
 proxy_no_cache $nocache;
 proxy_cache_bypass $nocache;
 proxy_cache crownstudent;
 proxy_cache_valid 200 1y;
 proxy_cache_use_stale error timeout invalid_header updating
 http_500 http_502 http_503 http_504;
}

No entanto, isso não parece funcionar. Existe alguma maneira que eu possa fazer isso acontecer? A documentação do Nginx é muito pouco clara e sem exemplos.

Obrigado!

    
por David 18.11.2015 / 11:58

1 resposta

1

$ uri contém um URL normalizado , que pode ser modificado por qualquer outra diretiva ou por um redirecionamento. As coisas podem ser mais complicadas se sua configuração do nginx ficar mais longa & mais longo. Eu prefiro $ request_uri (de acordo com a documentação do nginx: URI de solicitação original completa com argumentos).

Tente substituir sua condição por esta:

if($request_uri ~ ServerCheck) {set $nocache 1; }

Btw, Você não precisa capturar sua string de destino ServerCheck , já que o nginx apenas testa o regex.

Além disso, convém ter certeza de que a solicitação foi respondida por procuração. Eu uso diretiva add_header para este trabalho. Tais como:

add_header X-Proxy-Cache $upstream_cache_status;
    
por 18.11.2015 / 12:34

Tags