Como Instalar o Cache do Varnish 6 para Nginx no CentOS/RHEL 8

Cache de Verniz (comumente referido como Verniz) é um acelerador de proxy reverso HTTP de código aberto, poderoso 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 ao servidor de origem para processamento. E ele entrega a resposta do servidor de origem aos clientes.

Verniz atua como intermediário entre Nginx e clientes, mas com alguns benefícios de desempenho. Seu principal objetivo é fazer com que suas aplicações carreguem mais rápido, atuando como um motor de cache. Ele recebe solicitações dos clientes e as encaminha uma vez ao backend 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 rápido e indiretamente melhora o desempenho geral do seu servidor web porque Verniz servirá conteúdo da memória em vez de o Nginx processar arquivos do disco de armazenamento.

Além do cache, Verniz também tem vários outros casos de uso, incluindo um roteador de solicitações HTTP, balanceador de carga, firewall de aplicação web e mais.

O verniz é configurado usando a altamente extensível linguagem de configuração embutida Varnish Configuration Language (VCL), que permite escrever políticas sobre como as solicitações de entrada devem ser tratadas. Você pode usá-la 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. Usuários do RHEL 8 devem se certificar de ativar a assinatura redhat.

Para configurar um stack LEMP completo em vez de instalar apenas o servidor web Nginx, confira os seguintes guias.

  1. Como Instalar o Servidor LEMP no CentOS 8
  2. Como Instalar o Servidor LEMP no RHEL 8

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 de 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 que o Nginx estiver instalado, você precisará iniciar, habilitar e verificar o status usando os seguintes comandos systemctl.

# systemctl start nginx
# systemctl enable nginx
# systemctl status nginx
Verify Nginx Service Status

3. Se você tem um pouco de curiosidade, também pode verificar o socket TCP do Nginx, que funciona na porta 80 por padrão, usando o seguinte comando ss.

# ss -tpln
Check Nginx TCP Port

4. Se você estiver executando o firewall no sistema, certifique-se de atualizar as regras do firewall para permitir solicitações ao servidor web.

# firewall-cmd --zone=public --permanent --add-service=http
# firewall-cmd --reload

Passo 2: Instalando 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 (suporte a longo prazo).

Para instalar o módulo, execute o seguinte comando.

# dnf module install varnish
Install Varnish Cache in CentOS 8

6. Uma vez que a instalação do módulo esteja completa, você pode confirmar a versão do Varnish instalada no seu sistema.

# varnishd -V
Check Varnish Version

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 principal arquivo de configuração 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 está ativo e funcionando.

# systemctl start varnish
# systemctl enable varnish
# systemctl status varnish
Verify Varnish Cache on CentOS 8

Etapa 3: Configurando o Nginx para Trabalhar com o Varnish Cache

9. Nesta seção, mostraremos como configurar o Varnish Cache para funcionar à 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, veja o 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.

Nginx Server Block Configuration

10. Para executar o Varnish na frente do Nginx, você deve mudar a porta padrão do Nginx de 80 para 8080 (ou qualquer outra porta de sua escolha).

Isso deve ser feito em todos os futuros arquivos de configuração de bloco de servidor (geralmente criados em /etc/nginx/conf.d/) para sites ou aplicações web que você deseja servir via Varnish.

Por exemplo, o bloco de servidor para 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 {
        }
}
Nginx Server Block Configuration

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

Disable Nginx Server Block

11. Uma vez que a configuração esteja completa, verifique o arquivo de configuração para quaisquer erros e reinicie o serviço Nginx para aplicar as mudanças recentes.

# nginx -t
# systemctl restart nginx
Check Nginx Configuration Syntax

12. Em seguida, para receber solicitações HTTP dos clientes, precisamos configurar o Varnish para rodar 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 posteriores.

Precisamos fazer a mudança 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 linha seguinte e altere o valor da opção -a, que especifica o endereço de escuta e a porta. Defina a porta para 80 conforme mostrado na captura de tela a seguir.

Observe que se você não especificar um endereço, varnishd escutará 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
Change Varnish Listen Port

Salve as alterações no arquivo e saia.

13. Em seguida, você precisa definir o servidor backend que o Varnish visitará para buscar conteúdo. Isso é feito no arquivo principal de configuração do Varnish.

# vi /etc/varnish/default.vcl 

Procure pela seção de configuração do backend padrão e mude 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";
}
Set Default Varnish Backend Servers

Para este guia, estamos executando Varnish e Nginx no mesmo servidor. Se o seu servidor web Nginx estiver rodando em um host diferente. Por exemplo, outro servidor com 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 recentes alterações no arquivo de serviço do Varnish, e então reiniciar o serviço do Varnish para aplicar as mudanças conforme a seguir.

# systemctl daemon-reload
# systemctl restart varnish

15. Agora confirme que Nginx e Varnish estão escutando nos soquetes TCP configurados.

# ss -tpln
Confirm Nginx and Varnish Ports

Etapa 4: Testando a Configuração do Cache Varnish Nginx

16. Em seguida, verifique se as páginas da web estão sendo servidas via Cache Varnish da seguinte forma. 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
Verify Nginx Pages Served Via Varnish Cache

17. Alternativamente, use o comando curl conforme mostrado. Use o endereço IP do seu servidor ou o FQDN do site ou use 127.0.0.1 ou localhost se estiver testando localmente.

# curl -I http:///www.tecmint.lan
Verify Nginx Varnish Cache Page Using Curl

Utilitários de Administração Úteis do Cache Varnish

18. Nesta seção final, descreveremos brevemente alguns dos programas utilitários úteis que o Cache Varnish acompanha, que você pode usar para controlar o varnishd, acessar logs em memória e estatísticas gerais e mais.

varnishadm

varnishadm é uma utilidade para controlar uma instância do Varnish em execução. Ele estabelece uma conexão CLI com o 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
List Configured Backends

varnishlog

A utilidade varnishlog fornece acesso a dados específicos de solicitações. Oferece informações sobre clientes e solicitações específicas (leia man varnishlog para mais informações).

# varnishlog
Check Info About Clients and Requests

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 
Show Varnish Statistics

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 
View Shared Memory logs

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
Show Requests Histogram

É isso! Neste guia, mostramos como instalar o Varnish Cache e executá-lo à frente do servidor Nginx HTTP para acelerar a entrega de conteúdo web no CentOS/RHEL 8.

Qualquer pensamento ou pergunta sobre este guia pode ser compartilhado 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, você precisa configurar um proxy de término SSL/TLS para trabalhar em conjunto com o Varnish Cache para proteger seu site. No nosso próximo artigo, mostraremos como habilitar HTTPS para Varnish Cache usando Hitch no CentOS/RHEL 8.

Source:
https://www.tecmint.com/install-varnish-cache-for-nginx-on-centos-rhel-8/