Varnish + Nginx + WordPress: como utilizar o HTTP acelerator com o WordPress

varnishsoft_white_cmyk

Neste artigo vamos instalar e configurar o Varnish. Foi tudo feito tendo vários websites WordPress, servidor web Nginx e sistema operativo Debian. No fim, o Varnish passa a mostrar o conteúdo ao utilizador final através da porta 80, enquanto que o Nginx irá corre na porta 8080, e alimenta o Varnish. O Varnish encarregar-se-à de, quando não tiver cache do conteúdo, pedir ao Nginx o mesmo.

O que é o Varnish?

O Varnish é uma aplicação web, também conhecida como caching HTTP reverse proxy. O seu objectivo é diminuir a carga no servidor, e ao mesmo tempo melhorar o tempo de resposta de um website.

Ele fica à frente de qualquer servidor web HTTP e faz cache dos seus conteúdos.

O Nginx é um servidor web enquanto que o Varnish é um HTTP accelerator que funciona em paralelo com o Nginx, mas também poderá funcionar com o Apache.

Pré-requisitos

Irá precisar de um servidor com sistema operativo Debian-based, com o Nginx e pelo menos um website com WordPress a funcionar.

Primeiro passo: instalar o Varnish

Vamos então configurar o Varnish com o WordPress, e neste primeiro passo vamos instalar o Varnish.

A documentação oficial recomenda que instalemos o Varnish através do seu repositório. Assim sendo podemos começar todo o processo com:

sudo curl http://repo.varnish-cache.org/debian/GPG-key.txt | sudo apt-key add -

Vai-nos ser pedido para adicionar duas vezes a palavra-passe de root.

O próximo passo é adicionar o repositório à lista de origens do apt. Para isso basta abrirmos o seguinte ficheiro:

sudo vim /etc/apt/sources.list

Assim que estivermos no ficheiro é só adicionar o repositório do Varnish à lista de origens, com a seguinte linha:

deb http://repo.varnish-cache.org/debian/ lucid varnish-3.0

Agora é instalá-lo:

sudo apt-get update
sudo apt-get install varnish libvarnish-dev

Segundo passo: configurar o Varnish

Agora que temos o Nginx e o Varnish instalados e a funcionar, podemos começar a configura-los para diminuir a carga do servidor.

O que irá acontecer é que o Varnish irá server os conteúdos na porta 80, indo busca-los ao Nginx utilizando a porta 8080.

Agora vamos começar por configurar o Varnish. Para isso temos de abrir o seguinte ficheiro:

sudo vim /etc/default/varnish

Agora temos de procurar pelas linhas à frente do DAEMON_OPTS na secção “Alternative 2”, e mudar a porta do -a para 80. Ou seja, a configuração deverá ficar igual à seguinte:

DAEMON_OPTS="-a :80 \
             -T localhost:6082 \
             -f /etc/varnish/default.vcl \
             -S /etc/varnish/secret \
             -s malloc,256m"

Aqui já está tudo. Agora temos de ir ao ficheiro default.vcl:

sudo vim /etc/varnish/default.vcl

Este ficheiro diz ao Varnish qual será o seu back end, ou seja onde ir buscar os conteúdos do servidor, e neste caso será para ir ao Nginx à sua porta 8080.

Mas também irá servir para limpar a quantidade enorme de cookies do WordPress que torna a cache muito mais difícil. Todas as cookies não relacionadas com o back-office do WordPress.

Ou seja, o inicio do ficheiro default.vcl deverá ser assim:

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

# Drop any cookies sent to WordPress.
sub vcl_recv {
        if (!(req.url ~ "wp-(login|admin)")) {
                unset req.http.cookie;
        }
}

# Drop any cookies WordPress tries to send back to the client.
sub vcl_fetch {
        if (!(req.url ~ "wp-(login|admin)")) {
                unset beresp.http.set-cookie;
        }
}

Terceiro passo: configurar o Nginx

Agora que já configuramos o Varnish, ele estará à espera que o Nginx esteja a funcionar na porta 8080. É isso que vamos fazer agora.

Para isso basta colocar como porta de todos os virtual host na 8080, e que esteja apenas acessível apartir do localhost.

Vamos agora criar um ficheiro de configuração único com a porta, e assim permite-nos gerir a porta de todos os virtual hosts num só local.

Crie uma nova pasta e o ficheiro de configuração:

sudo mkdir /etc/nginx/global
sudo vim /etc/nginx/global/port.conf

No ficheiro de configuração port.conf coloca o seguinte:

listen 127.0.0.1:8080; ## listen for ipv4; this line is default and implied

E nos virtual hosts coloca um include para o port.conf.

server {
   include global/port.conf;
   [...]
}

Quarto passo: reiniciar os serviços

No fim disto tudo é reiniciar o nginx e o varnish.

sudo service nginx restart
sudo service varnish restart

Categoria:Tutoriais

Etiquetas:

Deixar uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

Artigo por: Tomé Rendas