Varnish responde mesmo com webserver down
Essa dica foi escrita pelo nosso amigo Bruno Almeida.
O Varnish, segundo seu site, é um web application accelerator também conhecido como um caching HTTP reverse proxy.
Você instala na frente de qualquer servidor que entenda HTTP e o configura para cachear o conteúdo. A velocidade de resposta aumentará de um fator de 300 a 1000 vezes, dependendo da sua arquitetura.
Uma visão de alto nível sobre ele pode ser visto em um vídeo no about do site.
O nginx [engine x] é um HTTP server, um reverse proxy server e mais um mail proxy server.
Vou apenas mostrar como fiz em um caso em que o cliente não podia ter indisponibilidade em seu site, isto é, o Varnish precisava continuar respondendo mesmo com a queda do nginx.
O que fiz foi incluir os seguintes parâmetros na configuração do nginx.
Nos parâmetros considere que:
- Porta 8081 é a porta de seu servidor de aplicação que irá responder;
- O IP: 127.0.0.1 é um IP local do servidor que poderá ser trocado pelo IP de seu servidor de aplicação;
- Porta 8081 é a porta de seu servidor de aplicação que irá responder;
- O IP: 127.0.0.1 é um IP local do servidor que poderá ser trocado pelo IP de seu servidor de aplicação;
No arquivo: /etc/varnish/default.vcl insira o conteúdo.
#Host servidor do nginx
backend default {
.host = "127.0.0.1";
.port = "8081";
.probe = {
.timeout = 60s;
.interval = 10s;
.window = 30;
.threshold = 10;
#Parametros para teste da página antes de servir conteúdo local
.request =
"GET HTTP/1.1"
"Host: PAGINA_FINAL_DO_CLIENTE:PORTA_DA_PAGINA_FINAL"
"Connection: close";
}
}
sub vcl_recv {
#Tempo útil de vida do conteúdo
set req.grace = 6h;
#Habilitando cache para páginas com cookies
remove req.http.cookie;
}
sub vcl_fetch {
#Tempo útil de vida do conteúdo
set beresp.grace = 6h;
#TTL Inserido para tempo de limite de vida do conteúdo
set beresp.ttl = 1h;
#Habilitando cache para páginas com cookies
unset beresp.http.Set-Cookie;
}
Como está funcionando?
O Varnish fica ativo na frente do ngnix escutando todas as requisições e mandando para o ngnix, caso o ngnix caia ou qualquer motivo que seja, irá enviar uma página estática que está armazenada em cache.
Simples assim.

Comentários
Postar um comentário