Então,
- Modifique o envio para enviar
X-Accel-Expires
todo o cabeçalho ou adicione-o comadd_header
diretiva (usando por exemplo$http_cache_control
em uma instrução if). - Ignore
Cache-Control
header para armazenamento em cache toda vez. - Use um bloco upstream.
map $upstream_http_cache_control $cache_control_value { "~^max-age=(?<duration>\d+)$" "$duration"; }
server {
listen 127.0.0.1:80; upstream nodes { server foo; } location / { if ($upstream_http_x_accel_expires = '') { add_header "X-Accel-Expires" $cache_control_value; } proxy_set_header "Host" $host; proxy_pass http://nodes; }
}
server {
server_name mydomain.com; listen X.X.X.X:80; upstream intermediate { server 127.0.0.1; } location / { proxy_set_header "Host" $host; proxy_pass http://intermediate; proxy_ignore_headers 'Cache-Control'; proxy_cache mycache; }
}
Para o último caso, consulte o primeiro ponto ou use proxy_cache_valid
, mas com este último paremetro você não pode fazer o timeout dinâmico. Você precisa de um fluxo de trabalho coerente em um ponto.