O Varnish Cache é um acelerador de aplicativos da web moderno, de alto desempenho, gratuito e de código aberto. É um proxy HTTP reverso rápido que armazena em cache o conteúdo para acelerar o desempenho do seu servidor web, armazenando o conteúdo da web na memória do servidor – em um cache. Ele é configurado para ser executado na frente de um servidor de origem, como o Apache (HTTPD).
Quando um cliente solicita conteúdo, o Varnish aceita a solicitação HTTP, envia a solicitação para o servidor de origem, armazena em cache os objetos retornados e responde à solicitação do cliente. Na próxima vez que o cliente solicitar o mesmo conteúdo, o Varnish o servirá a partir do cache. Dessa forma, ele reduz o tempo de resposta e o consumo de largura de banda da rede em futuras solicitações equivalentes.
O Varnish também funciona como roteador de solicitações HTTP, firewall de aplicativos da web, balanceador de carga e muito mais. Ele é configurado usando a flexível Linguagem de Configuração do Varnish (VCL), que é extensível usando Módulos do Varnish (também conhecidos como VMODs), suporta Inclusões de Lado do Cliente (ESL), compressão e descompressão Gzip, e muito mais.
Neste artigo, você aprenderá como instalar o servidor web Apache HTTPD e o Varnish Cache 6 em um servidor CentOS/RHEL 8 novo, incluindo a configuração do Varnish para ser executado na frente do servidor HTTPD.
Pré-requisitos:
- A server with CentOS 8 Installation
- A server with RHEL 8 installation with enabled Red Hat subscription on your system.
1. Comece atualizando todos os pacotes de software instalados no sistema da seguinte forma usando o comando DNF.
# dnf update
2. Em seguida, execute o seguinte comando para instalar o servidor web Apache HTTP do repositório AppStream.
# dnf install httpd
3. Assim que a instalação estiver completa, inicie o serviço httpd, habilite-o para iniciar automaticamente durante a inicialização do sistema e verifique seu status para confirmar que está em execução, usando o comando systemctl.
# systemctl start httpd # systemctl enable httpd # systemctl status httpd

4. Por padrão, o CentOS/RHEL 8 inclui um firewall totalmente bloqueado (execute firewall-cmd –state para confirmar). Você deve abrir acesso ao serviço HTTP no firewall para permitir que os usuários acessem sites ou aplicativos em execução sobre HTTP, e também recarregar as configurações do firewalld para aplicar as novas alterações.
# firewall-cmd --zone=public --permanent --add-service=http # firewall-cmd --reload
Passo 2: Instalando o Varnish Cache 6.4 no CentOS/RHEL 8
5. Agora que o servidor web Apache está em execução, você pode prosseguir para instalar Varnish Cache no sistema usando o seguinte comando.
# dnf module install varnish

6. Após uma instalação bem-sucedida, você pode verificar a versão do Varnish instalado no seu sistema.
# varnishd -V

7. Em seguida, o executável principal é instalado como /usr/sbin/varnishd. Além disso, os arquivos de configuração do Varnish são armazenados no diretório /etc/varnish, onde:
- /etc/varnish/default.vcl – é o arquivo de configuração principal do Varnish escrito usando VCL.
- /etc/varnish/secret – é o arquivo secreto do Varnish.
8. Agora, inicie o serviço do Varnish, para que seja ativado automaticamente durante a inicialização do sistema em caso de reinicialização do servidor e verifique seu status para garantir que esteja em execução da seguinte forma.
# systemctl start varnish # systemctl enable varnish # systemctl status varnish

Etapa 3: Configurando o Apache para Funcionar com o Cache do Varnish
9. Agora é hora de configurar o Cache do Varnish para ser executado na frente do serviço do Apache. Por padrão, o servidor Apache está configurado para ouvir a porta 80, isso é definido no arquivo de configuração principal /etc/httpd/conf/httpd.conf.
Abra-o para edição usando seu editor de texto favorito.
# vi /etc/httpd/conf/httpd.conf
Procure pelo parâmetro Listen. Para executar o Varnish na frente do servidor Apache, você deve alterar a porta padrão 80 para 8080 (ou qualquer outra porta de sua escolha), como mostrado na captura de tela a seguir.
Esta porta será adicionada como a porta do servidor backend no arquivo de configuração do Varnish posteriormente.

Também, a configuração de host virtual para cada site/aplicação que será servida via Varnish deve ser configurada para ouvir a porta acima. Aqui está a configuração para nosso site de teste (/etc/httpd/conf.d/tecmint.lan.conf).
<VirtualHost *:8080> DocumentRoot "/var/www/html/tecmint.lan/" ServerName www.tecmint.lan # Other directives here </VirtualHost>

Importante: Para evitar que a página de teste padrão do servidor HTTP Apache seja usada em algum momento, comente todas as linhas no arquivo /etc/httpd/conf.d/welcome.conf ou simplesmente exclua o arquivo.
# rm /etc/httpd/conf.d/welcome.conf
10. A seguir, teste a sintaxe de configuração do httpd para quaisquer erros. Se estiver tudo bem, reinicie o serviço httpd para aplicar as novas mudanças.
# httpd -t # systemctl restart httpd

Configurando Varnish para Systemd
11. Para implantar Varnish na frente de HTTPD, você precisa apenas configurá-lo para ouvir as solicitações do cliente na porta padrão de HTTP 80 conforme explicado abaixo.
Observe que em Varnish Cache 6.0 e superior, você deve definir a porta na qual o servidor Varnish está ouvindo na arquivo de serviço para systemd. Primeiro, abra para edição.
# systemctl edit --full varnish
Pesquise pela linha ExecStart, em seguida, altere o valor do switch -a
(que especifica o endereço e a porta para ouvir do Varnish) de :6081
para :80
conforme indicado na captura de tela abaixo.
É importante, caso você não especifique um endereço, o varnishd irá ouvir em todas as interfaces IPv4 e IPv6 disponíveis no servidor.
ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m

Salve as mudanças no arquivo e saia.
Configurando servidores de backend do Varnish usando VCL
12. Agora, você precisa configurar o servidor de origem, conhecido na terminologia do Varnish como um backend. É o servidor que entende HTTP, com o qual o Varnish se comunica para buscar conteúdo – httpd, neste caso. Ele é configurado no arquivo de configuração principal /etc/varnish/default.vcl.
# vi /etc/varnish/default.vcl
Existe uma seção de configuração de backend padrão chamada default. Você pode alterar “default” para server1 (ou qualquer nome de sua escolha para atender aos padrões do seu ambiente). Por padrão, o parâmetro host aponta para o localhost, assumindo que o servidor de backend está sendo executado no localhost.
Em seguida, defina a porta como 8080 (a porta que você definiu no arquivo de configuração do host virtual do Apache), conforme mostrado na captura de tela.
backend server1 { .host = "127.0.0.1"; .port = "8080"; }

Se o seu servidor de backend estiver sendo executado em um host diferente, por exemplo, em outro servidor com o endereço 10.42.1.10, então o parâmetro host deve apontar para este endereço IP.
backend server1 { .host = "10.42.1.10"; .port = "8080"; }
Salve o arquivo e feche-o.
13. Após fazer todas as alterações necessárias relacionadas ao Varnish, recarregue a configuração do gerenciador do systemd para refletir as novas alterações no arquivo de serviço do Varnish e reinicie o serviço do Varnish para aplicar as alterações gerais.
# systemctl daemon-reload # systemctl restart varnish
14. Neste ponto, o Varnish e o Apache devem estar agora escutando nas portas 80 e 8080 respectivamente. Você pode confirmar isso usando o comando estatísticas de soquete.
# ss -tpln

Passo 4: Testando oCache do Varnish e o Configuração do Apache
14. Para testar a configuração do Varnish Cache-HTTPD, abra um navegador web e navegue usando o IP ou FQDN do servidor, como mostrado na captura de tela a seguir.
http://10.42.0.144 OR http://www.tecmin.lan
Então, verifique se as páginas web estão sendo servidas através do Cache do Varnish conforme mostrado abaixo. Verifique as cabeçalhos HTTP clicando com o botão direito no cursor na página web exibida, selecione Examinar para abrir as ferramentas do desenvolvedor, em seguida, clique na aba Rede e recarregue a página. Em seguida, selecione uma solicitação para visualizar os cabeçalhos HTTP para confirmar isso, conforme mostrado na captura de tela a seguir.

Alternativamente, você pode executar o comando curl abaixo para verificá-lo.
# curl -I http:///10.42.0.144 OR #curl -I http:///www.tecmint.lan

Programas Utilitários de Utilidade do Cache do Varnish
15. Vamos encerrar este guia olhando para algumas das ferramentas úteis que a distribuição do Cache do Varnish vem com. Eles incluem ferramentas para administração do cache do Varnish, exibição de registros de log detalhados e visualização de estatísticas de desempenho do Varnish, conforme descrito abaixo.
varnishadm
O primeiro é o varnishadm, que é usado para administrar uma instância em execução do Varnish. Ele estabelece uma conexão de interface de linha de comando com o varnishd. Ele pode afetar uma instância em execução do Varnish, iniciando e parando o varnishd, alterando parâmetros de configuração, recarregando a VCL, listando backends e muito mais.
# varnishadm > backend.list

Para obter mais informações, leia o man varnishadm.
varnishlog
O próximo programa é o varnishlog, que é usado para acessar dados específicos de solicitação (isto é, informações sobre clientes e solicitações específicas). Ele fornece grandes quantidades de informações, portanto, geralmente é necessário filtrá-las.
# varnishlog

Para obter mais informações, leia o man varnishlog.
varnishstat
Também temos o varnishstat (estatísticas do Varnish), que é usado para acessar estatísticas gerais, como o número total de solicitações, o número de objetos e muito mais.
# varnishstat

Para obter mais informações, leia o man varnishstat.
varnishtop
Depois, temos o varnishtop, que é uma ferramenta que lê o log do Varnish e apresenta uma lista atualizada contínua das entradas de log mais comuns.
# varnishtop

Para obter mais informações, leia o man varnishtop.
varnishhist
Outro utilitário útil é o varnishhist (histórico do Varnish), que lê os registros do Varnish e apresenta um histograma continuamente atualizado mostrando a distribuição das últimas N solicitações pelo seu processamento.
# varnishhist

Para mais informações, leia o man varnishhist.
Aí está! Você implantou com sucesso o Varnish Cache para acelerar o conteúdo da sua aplicação web servida usando o Apache HTTP Server no CentOS/RHEL 8.
Se tiver alguma dúvida sobre este tópico ou pensamentos para compartilhar, use o formulário de feedback abaixo. Confira a documentação do Varnish Cache 6.0 para mais informações.
Se você quiser habilitar HTTPS no seu site, confira nosso próximo artigo, que mostrará como habilitar SSL/TLS para Varnish Cache usando Hitch no CentOS/RHEL 8.
Source:
https://www.tecmint.com/install-varnish-cache-for-apache-on-centos-rhel-8/