Parece uma duplicata disso:
Em resumo, use proxy_cache_use_stale
Como atualização, testei isso e funciona bem. Eu fiz o teste na minha estação de trabalho onde eu tenho (para completar):
Fedora 23 nginx 1.8.1 configurado como terminador ssl + cache + proxy reverso Apache 2.4.18 configurado para escutar na porta 80
Com o apache agindo como upstream, servindo apenas um arquivo estático, fiz este teste:
- Apache para cima, nginx para cima, apontando o navegador para o URL com proxy reverso servido por nginx eu vejo o conteúdo com proxy do Apache. Neste ponto O nginx mantém isso no cache.
- Parou o apache
- conectando-se ao nginx eu vejo o arquivo em cache como exibido antes pelo Apache.
A configuração do nginx que eu usei é (somente as partes interessantes):
nginx.conf:
http {
[...]
location
proxy_cache_path /var/lib/nginx/tmp/proxy/ levels=1:2 keys_zone=STATIC:10m inactive=24h max_size=1g;
include /etc/nginx/conf.d/*.conf;
}
/etc/nginx/conf.d/local.conf:
upstream localhost {
server 127.0.0.1:80;
[...]
}
server {
listen 127.0.0.1:443 ssl;
[...]
location /be/ {
proxy_pass http://localhost;
proxy_cache STATIC;
proxy_cache_valid 200 1d;
proxy_cache_use_stale error;
}