Blog.resende.biz

Servidor Varnish

Pedro Resende
Pedro Resende
Varnish

Para quem não sabe o que é, trata-se de um “acelerador” de aplicações web, por outras palavras é um servidor de “cache” em que guarda em memoria as páginas consultadas o que reduz bastante os acessos ao disco o que proporciona um aumento de velocidade considerável.

Podem ler um pouco mais em https://www.varnish-cache.org/

Vamos então começar pela instalação, para isso é necessário começar por se instalar o servidor varnish através do comando

$ sudo apt-get install varnish

Agora, vamos ter de alterar as configurações do varnish para estar entre o servidor web, neste caso o apache, e o cliente. Para isso vamos dizer ao varnish para “ouvir” a porta 80. basta então edirar o ficheiro “/etc/default/varnish” e onde está *:6081 alterar para *:80

Vamos colocar as novas configurações do varnish no ficheiro vlc, para isso corram os seguintes comandos

$ cd /etc/varnish

$ sudo mv default.vlc default.vlc.bck

$ sudo vi default.vlc

Adicionem então a seguinte configuração:

## Redirect requests to Apache, running on port 8000 on localhost
backend apache {
.host = “127.0.0.1″
.port = “8000″
}
## Fetch
sub vcl_fetch {
## Remove the X-Forwarded-For header if it exists.
remove req.http.X-Forwarded-For;

## insert the client IP address as X-Forwarded-For. This is the normal IP address of the user.
set req.http.X-Forwarded-For = req.http.rlnclientipaddr;
## Added security, the “w00tw00t” attacks are pretty annoying so lets block it before it reaches our webserver
if (req.url ~ “^/w00tw00t”) {
error 403 “Not permitted”
}
## Deliver the content
return(deliver);
}

## Deliver
sub vcl_deliver {
## We’ll be hiding some headers added by Varnish. We want to make sure people are not seeing we’re using Varnish.
## Since we’re not caching (yet), why bother telling people we use it?
remove resp.http.X-Varnish;
remove resp.http.Via;
remove resp.http.Age;

## We’d like to hide the X-Powered-By headers. Nobody has to know we can run PHP and have version xyz of it.
remove resp.http.X-Powered-By;
}

Uma vez alteradas as configurações do varnish, vamos reinica-lo correndo:

$ sudo /etc/init.d/varnish restart

Vamos agora configurar o apache para “ouvir” a porta do varnish e não a do utilizador, para isso alteramos o ficheiro “/etc/apache2/ports.conf” e onde temos

NameVirtualHost *:80
Listen 80

substitui-se por

NameVirtualHost *:8000
Listen 127.0.0.1:8000

Por fim, entramos no directório das configurações do apache “/etc/apache2/sites-enabled” e é necessário alterar cada um dos ficheiros, o que temos

<VirtualHost *:80>

por

<VirtualHost *:8000>
 ```

Por fim, vamos reiniciar o apache com

```bash
$ /etc/init.d/apache2 restart

e está feito, como podem ver nada do outro mundo .