Varnish es un pequeño servidor que actúa como proxy-caché de nuestro servidor web y que permite reducir notablemente las consultas a disco y por lo tanto acelerar las respuestas de la web. Varnish es por lo tanto un proxy inverso para un servidor web (Apache, Cherokee, etc) que permite a la vez que servir contenidos también mantenerlos en caché, acelerando así las respuestas. Aunque las páginas sean dinámicas y necesiten ser consultas a una base de datos, Varnish lo hace por nosotros, almacenando la página como estática en la memoria para que devolverla al cliente sea inmediato.
Varnish es software libre y está disponible en los repositorios de las principales distribuciones. Como lenguaje de configuración usa VLC (Varnish Configuration Language), un lenguaje propio que permite darle la flexibilidad y personalización que cada entorno necesita.
En este post vamos a configurar Varnish de forma sencilla para que nos cachee los contenidos de un servidor web (Apache) local que tenemos.
- InstalaciónAl emplear Debian como sistema operativo tenemos el paquete compilado en los repositorios oficiales.
shell> apt-get install varnish
- Configuración de apacheComo servidor de backend vamos a tener nuestro servidor Apache montado y escuchando en la IP pública o IP de DMZ correspondiente. Puesto que dejaremos que sea Varnish el encargado de servidor la web, es decir, escuchar en el puerto 80 de la IP "pública", configuraremos Apache para que escuche en el interfaz de localhost. Para ello editamos el fichero /etc/apache2/ports.conf dejándolo como sigue.
NameVirtualHost 127.0.0.1:80
80Listen 127.0.0.1:80 <IfModule mod_ssl.c> Listen 443 </IfModule> <IfModule mod_gnutls.c> Listen 443 </IfModule>Fijaros que en esta configuración sólo cambiamos el puerto 80 de escucha a localhost. Si hay algo sirviéndose en https (puerto 443) será entregado por Apache directamente. - Configuración de varnishAhora que ya tenemos el backend en localhost:80 tenemos que configurar Varnish para que escuche en el puerto 80 de la IP "pública" y que envíe dichas peticiones al backend.Lo primero de todo, configurar el comportamiento por defecto del nuevo servicio. En este caso editamos el fichero /etc/default/varnish.
START=yes DAEMON_OPTS="-a 192.168.0.33:80 \ -T 192.168.0.33:6082 \ -u varnish \ -g varnish \ -f /etc/varnish/default.vcl \ -S /etc/varnish/secret \ -s file,/var/lib/varnish/varnish_storage.bin,1G"
Una vez que ya tenemos esto, simplemente queda por crear el contenido del fichero /etc/varnish/default.vcl, que tendrá el comportamiento del servicio propiamente dicho.director www_master round-robin { { .backend = { .host = "127.0.0.1"; .port = "80"; } } } sub vcl_recv { set req.backend = www_master; remove req.http.X-Forwarded-For; set req.http.X-Forwarded-For = client.ip; }
Este fichero es muy simple, puesto que no hay nada especial en él, simplemente indicamos que el proveedor de datos (Apache) está en localhost:80. - Arrancando serviciosAhora que ya está todo guardado, simplemente lanzamos los servicios para que nuestro servidor quede nuevamente funcionando, pero con un proxy caché intermedio.
shell> /etc/init.d/apache2 restart shell> /etc/init.d/varnish start
Hay un bug en lo que has puesto:
ResponderEliminarListen 127.0.0.1:80
Que entiendo que debería ser:
Listen 127.0.0.1:8080