Ícone do site MeuHub

Plug-in de cache HTTP Varnish para WordPress em um contêiner Docker

SM BLOG Running Varnish in a Docker Container

Seu site está com tráfego intenso? Você está procurando uma solução que reduza a carga do servidor e melhore a velocidade do site ? O verniz pode ser o que você precisa. O Varnish escuta as solicitações duplicadas e fornece uma versão em cache das páginas do seu site, mediando entre as solicitações dos usuários e o seu servidor.

Então, como você ativa o verniz? Neste artigo, vou mostrar como você pode aumentar facilmente a velocidade do seu site usando o Varnish como um contêiner do Docker de um clique . Vou demonstrar como usar uma solução de cache de site como o Varnish pode melhorar facilmente os tempos de resposta da página e o número máximo de visitantes simultâneos em seu site. 

O que é verniz e por que você deve usá-lo?

O serviço de armazenamento em cache Varnish é um aplicativo da web de código aberto que opera como um proxy reverso HTTP. Embora crie um cache após atender a uma solicitação, ele o usa para atender à solicitação do outro visitante, caso o semelhante tenha sido armazenado em cache anteriormente. Portanto, geralmente, existem os seguintes benefícios de tal solução:

Agora falando da parte “HTTP Reverse-proxy”, que é o método que Varnish usa. No Plesk já temos o NGINX operando como um servidor web frontend, então como podemos executar o Varnish simultaneamente? É aí que entra um contêiner Docker com suas regras de proxy.

Aplicação de verniz em um contêiner Docker

Docker é um projeto de código aberto que torna a implantação de aplicativos de serviço, incluindo seu ambiente nativo, incrivelmente simples. No Plesk, temos este software implementado como uma extensão, que é completamente descrito nesta documentação do Plesk . Portanto, em vez de instalar o Varnish no servidor Plesk, vamos implantar o contêiner Docker oficial do Varnish:

Ative o verniz no Plesk e teste-o em uma página estática

Tudo bem, agora que as questões teóricas estão resolvidas, vamos para a parte prática. Na configuração padrão do Plesk, temos o Apache2 ouvindo em 7080 / tcp (HTTP) e 7081 / tcp (HTTPS) e NGINX, que atua como um proxy e realmente serve o conteúdo via 80 / tcp e 443 / tcp. 

Enquanto isso, agora também teremos um recipiente de verniz entre os dois. Conseqüentemente, o contêiner do Varnish receberia uma solicitação do NGINX e retornaria o conteúdo do Apache2. Mas não se preocupe, é mais simples do que parece!

Antes de prosseguirmos, primeiro precisamos nos certificar de que a extensão Docker está instalada. No painel do Plesk, navegue até Extensões> Catálogo de extensões e, na barra de pesquisa, digite “Docker”. Em seguida, clique em “Obter gratuitamente” se não estiver instalado ou em “Abrir” se estiver.

Nos ícones do catálogo de extensão, você encontrará a imagem oficial do verniz e pressione o botão “Executar” para instalar e executar o recipiente do verniz:

Na página que se abre, edite as configurações do contêiner. Desmarque a função “Mapeamento automático de porta” e aplique os seguintes mapeamentos manuais:

Isso significa que todas as solicitações HTTP enviadas para 32780 / tcp do servidor seriam redirecionadas para a porta 80 / tcp do contêiner Varnish Docker. Mesmo que não vamos usar a regra 32781, é necessário configurá-la por design.

Clique em “Ok” para executar o contêiner.

Feito isso, agora é necessário configurar o domínio. Navegue até Domains> example.com> Docker Proxy Rules e crie a seguinte regra de proxy:

Em seguida, navegue até Domínios> example.com> Configurações de hospedagem e desative a opção “Redirecionamento 301 seguro para SEO permanente de HTTP para HTTPS”, pois queremos testar a funcionalidade Varnish sobre HTTP primeiro.

Agora precisamos permitir o acesso à porta Apache2 da sub-rede Docker local (172.17.0.0/24). Isso pode ser alcançado por meio de IPtables  usando o seguinte comando:

# iptables -I INPUT -p tcp --dport 7080 -s 172.17.0.0/24 -j ACEITAR

Depois de adicionado, salve o conjunto de regras IPtables com este:

# iptables-save

No entanto, caso haja uma extensão do Firewall do Plesk instalada no servidor, é necessário adicionar a regra usando a GUI do Firewall do Plesk por meio de  Ferramentas e configurações> Segurança (Firewall)> Adicionar regra personalizada :

Assim que tivermos o firewall configurado, é hora de configurarmos o próprio Varnish para endereçar o IP: Porta do servidor Apache2 local.

Observação importante:  nos comandos a seguir, é necessário substituir 203.0.113.2 pelo endereço IP real do domínio, bem como o nome do contêiner (verniz) se tiver sido definido como personalizado.

Agora, para editar o /etc/varnish/default.vcl dentro do contêiner, execute os próximos 2 comandos:

# docker ps | verniz grep | awk {'print $ 1'} | xargs -i docker exec -t {} sed -i '/.port/c \ .port = "7080";' /etc/varnish/default.vcl
# docker ps | verniz grep | awk {'print $ 1'} | xargs -i docker exec -t {} sed -i '/.host/c \ .host = "203.0.113.2";' /etc/varnish/default.vcl

Depois que as alterações de configuração forem aplicadas, reinicie o contêiner:

# docker ps | verniz grep | awk {'print $ 1'} | xargs -i docker restart {}

Agora, quando abrimos nosso site, http://example.com, e o verificamos por meio das ferramentas de desenvolvedor do navegador (cabeçalhos), podemos ver que, após a solicitação inicial, a página foi carregada usando o cache do Varnish:

Configurando o Varnish no Plesk para servir a uma instância do WordPress

Neste ponto, já temos o WordPress instalado em nosso domínio example.com.

Em primeiro lugar, vamos baixar a predefinição de configuração do WordPress e colocá-la no catálogo de configuração do Docker:

# curl -o /tmp/default.vcl --silent https://support.plesk.com/hc/en-us/article_attachments/4405703421586/default.vcl && docker ps | verniz grep | awk {'print $ 1'} | xargs -i docker cp /tmp/default.vcl {}: / etc / varnish /

Depois que a configuração for copiada, é hora de ajustar o arquivo de configuração para usar o endereço IP do domínio:

# docker ps | verniz grep | awk {'print $ 1'} | xargs -i docker exec -t {} sed -i 's / XXX.XXX.XXX.XXX / 203.0.113.2 / g' default.vcl

E reinicie o contêiner para aplicar as alterações:

# docker ps | verniz grep | awk {'print $ 1'} | xargs -i docker restart {}

Use um plug-in do WordPress para ativar o suporte para HTTPS

Importante: Não use a opção “Redirecionamento 301 seguro para SEO permanente de HTTP para HTTPS” dentro do Plesk em “Configurações de hospedagem” porque isso levará a um loop de redirecionamento em nossa constelação de ambiente especial.

Em vez disso, configure as próximas diretivas Apache2 HTTP / HTTPS adicionais em Domains> example.com>  Apache & Nginx Settings:

SetEnvIf X-Forwarded-Proto "https" HTTPS = on 

Header append Vary: X-Forwarded-Proto

<IfModule mod_rewrite.c>

RewriteEngine on

RewriteCond% {HTTPS}! = On

RewriteCond% {HTTP: X-Forwarded-Proto}! Https [NC]


RewriteRule ^ https: //% {HTTP_HOST}% {REQUEST_URI} [L, R = 301]

É isso! Agora temos nosso site WordPress alimentado por um servidor de cache Varnish. No caso de desejar usar o Verniz para diferentes CMS, você pode verificar os tutoriais oficiais do Verniz.

Resumo: Verniz para WordPress dentro de um contêiner Docker no Plesk

Deixe-me fazer uma pequena lista de verificação:

Verniz no recipiente Docker? sim.
Verniz no WordPress? sim.
Verniz em Plesk? sim.
Verniz para WordPress dentro do contêiner Docker no Plesk? Absolutamente sim!
Missão cumprida!

Como você viu, o Varnish pode melhorar muito o desempenho do seu site WordPress e reduzir a carga da CPU do seu servidor. É relativamente fácil configurar um ambiente de trabalho usando Varnish em um contêiner Docker entre Nginx e Apache dentro do Plesk. A parte mais importante é a configuração correta do verniz para seu CMS específico.

Confira nossos planos de hospedagem de Sites, planos de hospedagem para WordPress, planos Econômicos. Planos de Email Profissional e Servidores VPS. Tenha um atendimento personalizado entrando em Contato pelo Site ou pelo WhatsApp. Se você é um revendedor, confira nossos planos de revenda.

Sair da versão mobile