Varnish Cache (comumente referido como Varnish) é um acelerador HTTP de proxy reverso, poderoso, de código aberto e rápido, com arquitetura moderna e linguagem de configuração flexível. Ser um proxy reverso simplesmente significa que é um software que você pode implantar na frente do seu servidor web (que é o servidor de origem ou backend) como Nginx, para receber solicitações HTTP dos clientes e encaminhá-las para o servidor de origem para processamento. E ele entrega a resposta do servidor de origem para os clientes.
Varnish atua como um intermediário entre Nginx e clientes mas com alguns benefícios de desempenho. Seu principal objetivo é fazer com que suas aplicações carreguem mais rapidamente, funcionando como um mecanismo de cache. Ele recebe solicitações dos clientes e as encaminha para o backend uma vez para armazenar o conteúdo solicitado (armazenar arquivos e fragmentos de arquivos na memória). Então, todas as futuras solicitações para conteúdo exatamente semelhante serão atendidas a partir do cache.
Isso faz com que suas aplicações web carreguem mais rapidamente e indiretamente melhora o desempenho geral do seu servidor web porque Varnish servirá o conteúdo da memória em vez de Nginx processar arquivos do disco de armazenamento.
Além do cache, Varnish também tem vários outros casos de uso, incluindo um roteador de solicitações HTTP, balanceador de carga, firewall de aplicativos web e mais.
O verniz é configurado usando a altamente extensível Linguagem de Configuração do Varnish (VCL) incorporada, que permite escrever políticas sobre como as solicitações recebidas devem ser tratadas. Você pode usá-lo para construir soluções personalizadas, regras e módulos.
Neste artigo, vamos passar pelos passos para instalar o servidor web Nginx e o Varnish Cache 6 em um servidor CentOS 8 ou RHEL 8 recém-instalado. Os usuários do RHEL 8 devem garantir que ativem a subscrição da Red Hat.
Para configurar um stack LEMP completo em vez de instalar apenas o servidor web Nginx, confira os seguintes guias.
Passo 1: Instalar o Servidor Web Nginx no CentOS/RHEL 8
1. O CentOS/RHEL 8 vem com a versão mais recente do software do servidor web Nginx, então vamos instalá-lo a partir do repositório padrão usando os seguintes comandos dnf.
# dnf update # dnf install nginx
2. Uma vez instalado o Nginx, você precisa iniciar, habilitar e verificar o status usando os seguintes comandos systemctl.
# systemctl start nginx # systemctl enable nginx # systemctl status nginx

3. Se estiver um pouco curioso, também pode verificar o socket TCP do Nginx, que roda na porta 80 por padrão, usando o seguinte comando ss.
# ss -tpln

4. Se estiver executando o firewall no sistema, certifique-se de atualizar as regras do firewall para permitir solicitações para um servidor web.
# firewall-cmd --zone=public --permanent --add-service=http # firewall-cmd --reload
Etapa 2: Instalando o Varnish Cache 6 no CentOS/RHEL 8
5. O CentOS/RHEL 8 fornece um módulo Varnish Cache DNF por padrão, que contém a versão 6.0 LTS (Long Term Support).
Para instalar o módulo, execute o seguinte comando.
# dnf module install varnish

6. Uma vez que a instalação do módulo estiver completa, você pode confirmar a versão do Varnish instalada em seu sistema.
# varnishd -V

7. Após instalar o Varnish Cache, o comando executável principal instalado em /usr/sbin/varnishd e os arquivos de configuração do varnish estão localizados em /etc/varnish/.
O arquivo /etc/varnish/default.vcl é o arquivo de configuração principal do varnish escrito usando VCL e /etc/varnish/secret é o arquivo secreto do varnish.
8. Em seguida, inicie o serviço do Varnish, habilite-o para iniciar automaticamente durante a inicialização do sistema e confirme que ele está em execução.
# systemctl start varnish # systemctl enable varnish # systemctl status varnish

Passo 3: Configurando o Nginx para Funcionar com o Varnish Cache
9. Nesta seção, mostraremos como configurar o Varnish Cache para rodar na frente do Nginx. Por padrão, o Nginx escuta na porta 80, normalmente cada bloco de servidor (ou host virtual) é configurado para escutar nesta porta.
Por exemplo, dê uma olhada no bloco de servidor nginx padrão configurado no arquivo de configuração principal (/etc/nginx/nginx.conf).
# vi /etc/nginx/nginx.conf
Procure pela seção do bloco de servidor conforme mostrado na captura de tela a seguir.

10. Para executar o Varnish na frente do Nginx, você deve alterar a porta padrão do Nginx de 80 para 8080 (ou qualquer outra porta de sua escolha).
Isso deve ser feito em todos os arquivos de configuração de blocos de servidor futuros (geralmente criados em /etc/nginx/conf.d/) para sites ou aplicativos da web que você deseja servir via Varnish.
Por exemplo, o bloco de servidor para o nosso site de teste tecmint.lan
é /etc/nginx/conf.d/tecmint.lan.conf e tem a seguinte configuração.
server { listen 8080; server_name www.tecmint.lan; root /var/www/html/tecmint.lan/; location / { } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }

Importante: Lembre-se de desativar o bloco de servidor padrão comentando sua seção de configuração no arquivo /etc/nginx/nginx.conf como mostrado na captura de tela a seguir. Isso permite que você comece a executar outros sites/aplicativos em seu servidor, caso contrário, o Nginx sempre direcionará solicitações para o bloco de servidor padrão.

11. Assim que a configuração estiver completa, verifique o arquivo de configuração em busca de erros e reinicie o serviço Nginx para aplicar as alterações recentes.
# nginx -t # systemctl restart nginx

12. Em seguida, para receber solicitações HTTP dos clientes, precisamos configurar o Varnish para ser executado na porta 80. Ao contrário das versões anteriores do Varnish Cache onde essa mudança era feita no arquivo de ambiente do Varnish (que agora está obsoleto), na versão 6.0 e acima.
Precisamos fazer a alteração necessária no arquivo de serviço do Varnish. Execute o seguinte comando para abrir o arquivo de serviço apropriado para edição.
# systemctl edit --full varnish
Encontre a seguinte linha e altere o valor da chave -a
, que especifica o endereço e a porta de escuta. Defina a porta para 80 como mostrado na captura de tela a seguir.
Observe que, se você não especificar um endereço, o varnishd escutará em todas as interfaces disponíveis de IPv4 e IPv6 ativas no servidor.
ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m

Salve as alterações no arquivo e saia.
13. Em seguida, você precisa definir o servidor de backend que o Varnish visitará para buscar conteúdo. Isso é feito no arquivo de configuração principal do Varnish.
# vi /etc/varnish/default.vcl
Procure a seção de configuração de backend padrão e altere a string “default” para server1 (ou qualquer nome de sua escolha para representar seu servidor de origem). Em seguida, defina a porta para 8080 (ou a porta de escuta do Nginx que você definiu no seu bloco de servidor).
backend server1 { .host = "127.0.0.1"; .port = "8080"; }

Para este guia, estamos executando o Varnish e o Nginx no mesmo servidor. Se o seu servidor web Nginx estiver sendo executado em um host diferente. Por exemplo, outro servidor com o endereço 10.42.0.247, então defina o parâmetro .host
conforme mostrado.
backend server1 { .host = "10.42.0.247"; .port = "8080"; }
Salve o arquivo e feche-o.
14. Em seguida, você precisa recarregar a configuração do gerenciador systemd devido às alterações recentes no arquivo de serviço do Varnish e, em seguida, reiniciar o serviço do Varnish para aplicar as alterações conforme abaixo.
# systemctl daemon-reload # systemctl restart varnish
15. Agora confirme que o Nginx e o Varnish estão escutando nas tomadas TCP configuradas.
# ss -tpln

Passo 4: Testando a Configuração do Cache do Nginx Varnish
16. Em seguida, verifique se as páginas da web estão sendo servidas via Cache do Varnish da seguinte maneira. Abra um navegador da web e navegue usando o IP do servidor ou FDQN conforme mostrado na captura de tela a seguir.
http://www.tecmin.lan OR http://10.42.0.144

17. Alternativamente, use o comando curl conforme mostrado. Use o endereço IP do seu servidor ou FQDN do site ou use 127.0.0.1 ou localhost se estiver testando localmente.
# curl -I http:///www.tecmint.lan

Utilitários Úteis de Administração do Cache do Varnish
18. Nesta seção final, descreveremos brevemente alguns dos programas utilitários úteis que o Cache do Varnish acompanha, que você pode usar para controlar varnishd, acessar logs em memória e estatísticas gerais e muito mais.
varnishadm
varnishadm um utilitário para controlar uma instância em execução do Varnish. Ele estabelece uma conexão CLI com varnishd. Por exemplo, você pode usá-lo para listar backends configurados conforme mostrado na captura de tela a seguir (leia man varnishadm para mais informações).
# varnishadm varnish> backend.list

varnishlog
O utilitário varnishlog fornece acesso a dados específicos de solicitação. Ele oferece informações sobre clientes e solicitações específicas (leia man varnishlog para mais informações).
# varnishlog

varnishstat
A varnishstat also known as varnish statistics, which gives you a glance at Varnish’s current performance by providing access to in-memory statistics such as cache hits and misses, information about the storage, threads created, deleted objects (read man varnishstat for more information).
# varnishstat

varnishtop
A varnishtop utility reads the shared memory logs and presents a continuously updated list of the most commonly occurring log entries (read man varnishtop for more information).
# varnishtop

varnishhist
A varnishhist (varnish history) utility parses the varnish logs and outputs a continuously updated histogram showing the distribution of the last n requests by their processing (read man varnishhist for more information).
# varnishhist

Isso é tudo! Neste guia, mostramos como instalar o Varnish Cache e executá-lo na frente do servidor Nginx HTTP para acelerar a entrega de conteúdo da web no CentOS/RHEL 8.
Quaisquer pensamentos ou perguntas sobre este guia podem ser compartilhados usando o formulário de feedback abaixo. Para mais informações, leia a documentação do Varnish Cache.
O principal inconveniente do Varnish Cache é a falta de suporte nativo para HTTPS. Para habilitar o HTTPS em seu site/aplicativo web, você precisa configurar um proxy de terminação SSL/TLS para funcionar em conjunto com o Varnish Cache para proteger seu site. Em nosso próximo artigo, mostraremos como habilitar o HTTPS para o Varnish Cache usando Hitch no CentOS/RHEL 8.
Source:
https://www.tecmint.com/install-varnish-cache-for-nginx-on-centos-rhel-8/