nginx retorna erro 500 quando excluo o cache

1

Estou usando o nginx 1.8.1 com o microcache para armazenar alguns pedidos php em /dev/shm e ele está funcionando bem, no entanto, quando eu reinicializo o servidor, os arquivos em cache sumiram (obviamente), mas o nginx ainda faz referência àqueles na memória compartilhada (não deveria ser ido na reinicialização?).

Então, o que acontece é que, se eu solicitar uma página que tenha sido armazenada em cache antes, ela mostrará um erro 500 e me fornecerá uma resposta vazia.

O mesmo acontece se eu deixar o cache do nginx algumas páginas e, em seguida, excluir manualmente os arquivos físicos armazenados em cache.

Eu tenho que recarregar o nginx para que ele funcione novamente.

Eu pensei que, se o nginx não encontrar o arquivo de cache, ele criaria um novo. Isso é suposto acontecer? Eu tenho que recarregar sempre o nginx depois de deletar os arquivos de cache manualmente?

Existe uma maneira de o nginx recriar automaticamente o arquivo, se ele não encontrar o arquivo em cache?

Código relevante:

fastcgi_cache_path /dev/shm levels=1:2 use_temp_path=off keys_zone=mcache:16m inactive=600s max_size=512m;

E também:

fastcgi_keep_conn on;
fastcgi_connect_timeout 20s; 
fastcgi_send_timeout 30s; 
fastcgi_read_timeout 30s;
fastcgi_cache_lock   on;
fastcgi_cache_use_stale timeout updating;
fastcgi_cache_bypass $skip_cache;
fastcgi_no_cache     $skip_cache;
fastcgi_cache        mcache;
fastcgi_cache_valid 200 301 302  5s;
fastcgi_cache_valid 403 404      5m;
add_header X-Proxy-Cache $upstream_cache_status;

Eu tenho:

sendfile off;

Mas ainda preciso recarregar (reiniciar não conserta) o nginx para regenerar o cache. Estou testando isso em um vultr 2Gb vm.

    
por peixotorms 04.02.2016 / 14:46

1 resposta

0

Eu encontrei a resposta:)

No meu código:

fastcgi_cache_path /dev/shm levels=1:2 use_temp_path=off keys_zone=mcache:16m inactive=600s max_size=512m;

Especificamente esta parte:

use_temp_path=off 

Funciona depois que eu excluo essa parte e saio no padrão. Isso porque, quando você desativá-lo, ele criará uma pasta temp no diretório de cache, que não deve ser excluída quando você limpar o cache.

Quando eu estava fazendo isso:

rm -rf /dev/shm/*

O cache foi embora, mas também foi a pasta temporária ... Portanto, o nginx não pôde usá-lo para gerar novamente os novos arquivos em cache. Uma que você deixa no padrão (a temperatura estará em outro lugar), mesmo se eu excluir todo o cache, ela funcionará como pretendido.

    
por 04.02.2016 / 15:41