Verniz ignora um arquivo grande
-
26-12-2019 - |
Pergunta
Tenho o Varnish instalado com a configuração padrão em meu servidor web Apache.Listagem do Apache para a porta 8080 e listagem do Varnish para 80.
Tenho poucos arquivos para download no site com os tamanhos 100MB, 500MB e 1GB
O 1GB não está funcionando, ao clicar nele aparecerá página indisponível ou conexão fechada pelo servidor.Os outros dois estão funcionando bem, mas não tenho certeza se esta é a maneira correta de baixá-los.
Como faço para que o verniz ignore esses arquivos e os obtenha diretamente do servidor web?
Obrigado.
Solução
Isso poderia ser feito com verificação de Content-Length
na resposta de back-end, e se for maior que algum tamanho, marque-o com alguma marca e restart
solicitar transação
Exemplo, arquivos com Content-Length >=10.000.00 devem ser canalizados:
sub vcl_fetch {
..
if ( beresp.http.Content-Length ~ "[0-9]{8,}" ) {
set req.http.x-pipe-mark = "1";
return(restart);
}
..
}
Em seguida, voltamos a verificar o recebimento e a análise da solicitação.Aqui podemos verificar nossa marca e atuar pipe
sub vcl_recv {
..
if (req.http.x-pipe-mark && req.restarts > 0) {
return(pipe);
}
..
}
Outras dicas
In varnish 4, vcl_fetch should be replaced with vcl_backend_response, see https://www.varnish-cache.org/docs/trunk/whats-new/upgrade-4.0.html