Como Acelerar o Nginx com Cache Varnish no CentOS 7

O Varnish Cache (também referido como Varnish) é um acelerador HTTP de alto desempenho de código aberto projetado para acelerar servidores web. Em nossos últimos artigos, explicamos como configurar o Varnish Cache para Apache no CentOS 7 e no CentOS 8.

Neste artigo, mostraremos como instalar e usar o Varnish Cache como um frontend para o servidor HTTP Nginx no CentOS 7. Este guia também deve funcionar no RHEL 7.

Requisitos

  1. A CentOS 7 with Apache installed
  2. A CentOS 7 with a static IP address

Passo 1: Instalar o Servidor Web Nginx no CentOS 7

1. Comece instalando o servidor HTTP Nginx nos repositórios de software padrão do CentOS usando o gerenciador de pacotes YUM da seguinte forma.

# yum install nginx
Install Nginx on CentOS 7

2. Quando a instalação estiver concluída, inicie o serviço Nginx por enquanto e o habilite para iniciar automaticamente na inicialização do sistema.

# systemctl start nginx
# systemctl enable nginx
# systemctl status nginx
Start and Enable Nginx at Boot

3. Agora modifique as regras de firewall do sistema para permitir pacotes de entrada na porta 80 usando os comandos abaixo.

# firewall-cmd --zone=public --permanent --add-port=80/tcp
# firewall-cmd --reload
# firewall-cmd --zone=public --permanent --add-port=8080/tcp
# firewall-cmd --reload
Open Nginx Port on Firewall

Passo 2: Instalar o Varnish Cache no CentOS 7

4. Agora existem pacotes RPM pré-compilados para a última versão do Varnish Cache 6 (ou seja, 6.5 no momento da escrita), portanto, você precisa adicionar o repositório oficial do Varnish Cache.

Antes disso, é necessário habilitar o repositório EPEL para instalar vários pacotes de dependência conforme mostrado.

# yum install -y epel-release

5. Em seguida, instale o pygpgme, um pacote para lidar com assinaturas GPG e o yum-utils, uma coleção de utilitários úteis que estendem os recursos nativos do yum de várias maneiras.

# yum install pygpgme yum-utils

6. Agora crie um arquivo chamado /etc/yum.repos.d/varnishcache_varnish5.repo que contenha a configuração do repositório abaixo.

# vi /etc/yum.repos.d/varnishcache_varnish65.repo

Importante: Certifique-se de substituir el e 7 na configuração abaixo pela distribuição e versão do seu Linux:

[varnishcache_varnish65]
name=varnishcache_varnish65
baseurl=https://packagecloud.io/varnishcache/varnish65/el/7/$basearch
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/varnishcache/varnish65/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300

[varnishcache_varnish65-source]
name=varnishcache_varnish65-source
baseurl=https://packagecloud.io/varnishcache/varnish65/el/7/SRPMS
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/varnishcache/varnish65/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300

7. Agora execute o comando abaixo para atualizar o cache yum local e instalar o pacote de cache varnish (não se esqueça de aceitar a chave GPG digitando y ou yes durante a instalação do pacote):

# yum -q makecache -y --disablerepo='*' --enablerepo='varnishcache_varnish65'
# yum install varnish 
Install Varnish Cache in CentOS 7

8. Após a instalação do Varnish Cache, o executável principal será instalado como /usr/sbin/varnishd e os arquivos de configuração do varnish estão localizados em /etc/varnish/:

  • /etc/varnish/default.vcl – este é o arquivo de configuração principal do varnish, ele é escrito usando a linguagem de configuração do varnish (VCL).

9. Agora inicie o serviço Varnish, habilite-o para iniciar automaticamente durante a inicialização do sistema e verifique seu status para garantir que ele esteja funcionando como segue.

# systemctl start varnish
# systemctl enable varnish
# systemctl status varnish
Start Varnish Cache

10. Você pode confirmar que a instalação do Varnish foi bem-sucedida vendo a localização do executável Varnish e a versão instalada em seu sistema.

$ which varnishd
$ varnishd -V
Saída de Exemplo
varnishd (varnish-6.5.1 revision 1dae23376bb5ea7a6b8e9e4b9ed95cdc9469fb64)
Copyright (c) 2006 Verdens Gang AS
Copyright (c) 2006-2020 Varnish Software

Passo 3: Configurar o Nginx para Funcionar com o Cache do Varnish

11. Neste passo, você precisa configurar o Nginx para funcionar com o Cache do Varnish. Por padrão, o Nginx escuta na porta 80, você deve alterar a porta padrão do Nginx para 8080 para que ele seja executado atrás do cache do Varnish.

Abra o arquivo de configuração do Nginx /etc/nginx/nginx.conf e encontre a linha listen 80 e mude para listen 8080 como no bloco de servidor mostrado na captura de tela abaixo.

# vi /etc/nginx/nginx.conf
Configure Nginx Listening Port

Nota: Isso deve ser feito em todos os arquivos de configuração do bloco do servidor (geralmente criados em /etc/nginx/conf.d/) para os sites que você deseja servir via Varnish.

12. Em seguida, abra o arquivo de configuração do serviço varnish e encontre o parâmetro ExecStart que especifica a porta na qual o Varnish escuta, e altere seu valor de 6081 para 80.

# systemctl edit --full  varnish

A linha deve ser semelhante ao mostrado.

ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m
Change Varnish Cache Port

13. Em seguida, configure o Nginx como um servidor de backend para o proxy do Varnish, no arquivo de configuração /etc/varnish/default.vcl.

# vi /etc/varnish/default.vcl 

Encontre a seção backend e defina o IP e a porta do host. Abaixo está a configuração padrão do backend, ajuste isso para apontar para o seu servidor de conteúdo real.

backend default {
    .host = "127.0.0.1";
    .port = "8080";
}

14. Após realizar todas as configurações necessárias, reinicie o Nginx HTTPD e o cache do Varnish para efetuar as alterações acima.

# systemctl daemon-reload
# systemctl restart nginx
# systemctl restart varnish

Passo 4: Testar o Cache do Varnish no Nginx

15. Por fim, teste se o cache do Varnish está habilitado e funcionando com o serviço Nginx usando o comando cURL abaixo para visualizar o cabeçalho HTTP.

# curl -I http://localhost
Saída de Exemplo
HTTP/1.1 200 OK
Server: nginx/1.16.1
Date: Wed, 06 Jan 2021 09:24:18 GMT
Content-Type: text/html
Content-Length: 4833
Last-Modified: Fri, 16 May 2014 15:12:48 GMT
ETag: "53762af0-12e1"
X-Varnish: 2
Age: 0
Via: 1.1 varnish (Varnish/6.5)
Accept-Ranges: bytes
Connection: keep-alive

Você pode encontrar informações adicionais no Repositório do Github do Varnish Cache: https://github.com/varnishcache/varnish-cache

Neste tutorial, explicamos como configurar o Cache do Varnish para o servidor HTTP Nginx no CentOS 7. Use o formulário de comentário abaixo para nos enviar quaisquer dúvidas ou ideias adicionais.

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