Eu uso o nginx como servidor frontal, modifiquei os arquivos CSS, mas o nginx ainda está servindo os antigos.
Tentei reiniciar o nginx, sem sucesso, e pesquisei no Google, mas não encontrei uma maneira válida de limpá-lo.
Alguns artigos dizem que podemos simplesmente excluir o diretório de cache:, var/cache/nginx
mas não existe esse diretório no meu servidor.
O que eu deveria fazer agora?
proxy_cache
?cache
, não achei nos arquivos de configuraçãoRespostas:
Eu tive exatamente o mesmo problema - eu estava executando meu nginx no Virtualbox. Eu não tinha o cache ativado. Mas parece que
sendfile
foi definido paraon
emnginx.conf
e que estava causando o problema. @kolbyjack mencionou isso acima nos comentários.Quando eu desliguei
sendfile
- funcionou bem.Isto é porque:
Está relacionado a este bug: https://www.virtualbox.org/ticket/12597
fonte
Você também pode ignorar / re-armazenar em cache arquivo por arquivo usando
e como bônus, você pode retornar esse cabeçalho para ver se o obteve no cache (retornará 'HIT') ou no servidor de conteúdo (retornará 'BYPASS').
para expirar / atualizar o arquivo em cache, use curl ou qualquer outro cliente restante para fazer uma solicitação para a página em cache.
isso retornará uma nova cópia do item e também substituirá o que está no cache.
fonte
A menos que você tenha configurado uma zona de cache via proxy_cache_path e depois a usado (por exemplo, em um bloco de localização), via: proxy_cache nada será armazenado em cache.
Se você fez isso, no entanto, de acordo com o autor do nginx , basta remover todos os arquivos do diretório de cache.
Maneira mais simples:
find /path/to/your/cache -type f -delete
fonte
[crit] 1640#0: unlink() "/path/to/cache/85/1cc5328db278b328f2c200c65179ad85" failed (2: No such file or directory)
Você pode excluir o diretório de cache do nginx ou pesquisar um arquivo específico:
E exclua apenas um arquivo para o nginx atualizá-los.
fonte
grep -lr 'http://mydomain.pl/css/myedited.css$' /var/nginx/cache/*
grep: /var/nginx/cache/*: No such file or directory
: estou usando o Ubuntu 14.04.3 LTS e o nginx / 1.8.1. Qualquer ideia?sudo find /var/nginx/cache -type f -exec grep -l '/css/myedited.css' {} \;
Há duas respostas nesta pergunta.
Usar:
POR EXEMPLO:
fonte
Eu achei isso útil
Pesquise e, se encontrado, exclua.
fonte
Na minha instalação do nginx, descobri que tinha que ir para:
e
nesse diretório. Se você conhece o caminho para a instalação do nginx e pode encontrar o diretório de cache, o mesmo pode funcionar para você. Tenha muito cuidado com o
rm -rf
comando, se você estiver no diretório errado, poderá excluir todo o seu disco rígido.fonte
Eu executo um script bash muito simples que leva 10 segundos para fazer o trabalho e me envia um email quando terminar.
fonte
Eu também tive esse problema.
Meu domínio usa cloudflare.com para DNS (ótimo serviço!). Aha! Lá estava:
cloudflare.com -> cache -> Limpar cache (limpei tudo) Isso resolveu meu problema!
fonte
Temos um cache nginx muito grande (gigabytes) que ocasionalmente precisamos limpar. Elaborei um script que limpa instantaneamente o cache (no que diz respeito ao Nginx) e remove o diretório de cache sem passar fome pelo aplicativo principal de E / S do disco.
Em suma:
Aqui está o script, adaptado ao Ubuntu 16.04 LTS, com o cache localizado em
/mnt/nginx-cache
:E, caso seja útil, aqui está a configuração do Nginx que usamos:
fonte
Para quem outras soluções não estão funcionando, verifique se você está usando um serviço DNS como o CloudFlare . Nesse caso, ative o "Modo de desenvolvimento" ou use a ferramenta "Limpar cache".
fonte
Observe que proxy_cache_bypass pode causar um mundo de mágoa se o seu aplicativo não retornar uma resposta armazenável em cache para essa solicitação específica em que você a acionar.
Se, por exemplo, seu aplicativo enviar um cookie a cada primeira solicitação, provavelmente um script que aciona proxy_pass_bypass via curl provavelmente obterá esse cookie na resposta, e o nginx não usará essa resposta para atualizar o item em cache.
fonte
Tenha cuidado para especificar corretamente o caminho correto.
fonte
Para aqueles que tentaram excluir os arquivos de cache nginx, e eles não funcionaram ou funcionaram intermitentemente, dê uma olhada na sua configuração para open_file_cache. Se isso estiver ativado e configurado para armazenar em cache um descritor de arquivo por um longo tempo, o Nginx ainda poderá ver uma versão do arquivo em cache, mesmo depois de excluí-lo do disco. Eu tive que reduzir o open_file_cache_valid para 1s (não tenho certeza se isso é essencialmente o mesmo que desabilitar completamente o cache do arquivo).
fonte
No meu servidor, a pasta cache do nginx está em
/data/nginx/cache/
Então eu o removi apenas:
sudo rm -rf /data/nginx/cache/
Espero que isso ajude alguém.
fonte
Se você deseja limpar o cache de arquivos específicos, pode usar a
proxy_cache_bypass
diretiva. é assim que se fazAgora, se você quiser ignorar o cache, acesse o arquivo passando o parâmetro nocache
http://www.example.com/app.css?nocache=true
fonte
app.css?nocache=true
) enquanto o arquivo original (sem consulta) permanece no cache (app.css
)?Você pode adicionar a configuração no nginx.conf como a seguir.
Acima, uma pasta chamada "nginx_cache" é criada dinamicamente em / tmp / para armazenar conteúdo em cache.
fonte
Existe um método certo para remover apenas arquivos de cache, que corresponde a qualquer KEY. Por exemplo:
Isso remove todos os arquivos de cache, que correspondem a KEY "yahoo / *", se no nginx.conf estiver definido:
fonte
Usamos o nginx para armazenar muitas coisas em cache. Existem dezenas de milhares de itens no diretório de cache. Para encontrar itens e excluí-los, desenvolvemos alguns scripts para simplificar esse processo. Você pode encontrar o repositório para esses scripts abaixo:
https://github.com/zafergurel/nginx-cache-cleaner
A ideia é simples. Para criar um índice do cache (com chaves de cache e arquivos de cache correspondentes) e pesquise nesse arquivo de índice. Realmente nos ajudou a acelerar a localização de itens (de minutos a segundos) e excluí-los de acordo.
fonte
No meu caso,
touch
esse arquivo CSS, parece que os recursos foram alterados (na verdadetouch
, nada faz no arquivo, exceto a hora da última modificação), para que o navegador e o nginx apliquem os recursos mais recentesfonte
Eu estava enfrentando um tipo de problema semelhante:
Configuração do sistema e problema: (Em uma caixa virtual, eu estou hospedando na web usando o ubuntu e o nginx - as atualizações da página PHP não refletiam alterações no arquivo css externo). Estou desenvolvendo site na máquina Windows e transferindo arquivos para o nginx via pasta compartilhada. Parece que o nginx não capta as alterações no arquivo css (atualizar de qualquer forma não ajuda. Alterar o nome do arquivo css é apenas algo que funcionou)
Solução: Na VM, encontre o arquivo compartilhado (arquivo css no meu caso). Abra com o nano e compare com o arquivo no compartilhamento do Windows (eles parecem idênticos). Na VM, salve o arquivo compartilhado com o nano. Todas as alterações agora são refletidas no navegador. Não sei por que isso funciona, mas funcionou no meu caso.
ATUALIZAÇÃO: Após reiniciar o servidor da VM, o problema retornou. Seguir as instruções em Solução tornou o css responsivo a atualizações novamente
fonte
No meu caso, foi o opcache ativado no /etc/php/7.2/fpm/php.ini (Ubuntu):
Configurá-lo como 0 fez o servidor carregar a versão mais recente dos arquivos (php).
fonte