Make nginx avoid cache se a resposta contiver Vary Accept-Language

1

O módulo de cache do nginx versão 1.1.19 não considera o cabeçalho Vary . Isso significa que o nginx atenderá a mesma solicitação mesmo que o conteúdo de um dos campos especificados no cabeçalho Vary tenha sido alterado.

No meu caso, eu só me importo com o Accept-Language , todos os outros foram atendidos.

Como posso fazer com que o nginx armazene em cache todas as respostas exceto que tenham um Vary de cabeçalho que contenha Accept-Language ?

Acho que eu deveria ter algo parecido com

location / {
    proxy_cache cache;
    proxy_cache_valid 10m;
    proxy_cache_valid 404 1m;

    if ($some_header ~ "Accept-Language") { # WHAT IS THE HEADER TO USE?
         set $contains_accept_language # HOW SHOULD THIS VARIABLE BE SET?
    }

    proxy_no_cache $contains_accept_language

    proxy_http_version 1.1;
    proxy_pass http://localhost:8001;
}

mas não sei qual é o nome da variável para "o cabeçalho Vary recebido do backend".

    
por gioele 15.09.2012 / 20:05

1 resposta

1

Como o ticket relevante o possui, você tem algumas opções:

  1. Adicione $ http_accept_language à chave do cache.
  2. proxy_no_cache $ upstream_http_vary;
por 16.09.2012 / 09:38