Aqui está uma implementação de exemplo usando cookies. Se o valor do cookie for um dos dark
, light
ou mobile
, tentaremos veicular a página em cache. Para qualquer outro valor de cookie (incluindo nenhum valor) nós ignoramos o cache e supomos que o upstream irá configurar o cookie apropriado para que o próximo pedido use o cache.
Usamos proxy_cache_key
para adicionar valor de cookie à chave de cache e proxy_cache_bypass
para ignorar o cache se o cookie não estiver no conjunto de valores predefinidos.
map $cookie_theme $cache_bypass {
default "1";
"dark" "0";
"light" "0";
"mobile" "0";
}
proxy_cache_path /var/tmp/nginx levels=1 keys_zone=test-cache:10m;
server {
listen 80;
server_name test-cache.localhost;
location / {
proxy_pass http://test-cache;
proxy_cache test-cache;
proxy_cache_valid 1m;
proxy_cache_key "$host$request_uri $cookie_theme";
proxy_cache_bypass $cache_bypass;
}
}
Manuais: