Como o ticket relevante o possui, você tem algumas opções:
- Adicione $ http_accept_language à chave do cache.
- proxy_no_cache $ upstream_http_vary;
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".
Como o ticket relevante o possui, você tem algumas opções:
Tags cache nginx http-headers