Home > General > ¿QUÉ ES VARNISH CACHE?

Varnish es un acelerador HTTP que funciona como un proxy reverso. Se situa por delante del servidor web, cacheando la respuesta de dicho servidor web en memoria. La próxima vez que un visitante visite la misma URL, la página será servida desde Varnish en lugar de desde el servidor web, ahorrando recursos en el backend y permitiendo más conexiones simultáneas.

como balanceador de carga, distribuyendo peticiones a varios servidores o como control de acceso a tu servidor, por ejemplo permitiendo conexiones sólo desde la IP o grupo de IPs especificadas.

Las principales características de Varnish son:

  • Es estable y muy rápido, capaz de servir varios cientos de miles de peticiones por segundo, según ciertos benchmarks.
  • Dispone de un lenguaje propio de configuración, llamado VCL (Varnish Configuration Language), con el que es posible definir las reglas para cachear contenido. Gracias a esto es extremadamente flexible, pudiéandose configurar para solucionar problemas muy diversos.
  • Está escrito en C, y es posible extender su funcionalidad con módulos llamados VMODs, escritos asimismo en C. Puedes ver una lista de VMODs publicados aquí.
  • Ofrece soporte para GZIP y ESI (Edge Side Includes), y es capaz de recomponer una página usando ESI sin pasar por el back-end. Esto permite cachear fragmentos de la página usando tiempos de expiración diferentes, mostrando siempre contenido fresco sin necesidad de borrar de caché las secciones menos cambiantes de la página.

¿CÓMO USAR VARNISH?

(Nota:En los ejemplos voy a utilizar el sistema operativo Ubuntu 12.04 y Apache como servidor web).

Una vez instalado Varnish desde el repositorio de tu sistema operativo o compliando el código fuente (instrucciones), hay que configurarlo para que sea el encargado de recibir todas las peticiones desde el exterior. Vamos a editar el archivo /etc/default/varnish y a configurar el demonio para que escuche desde el puerto 80 de la interfaz pública del servidor.

DAEMON_OPTS=”-a :80
-T localhost:6082
-f /etc/varnish/default.vcl
-S /etc/varnish/secret
-s malloc,1G”
Lo más interesante de esta sencilla configuración es el parámetro -s. Con él indicaremos dónde queremos guardar la caché (RAM o disco) y cuanto espacio queremos reservar. Obviamente la RAM (malloc) es varios órdenes de magnitud más rápida que el disco por lo que es recomendable usarla para almacenar la caché siempre y cuanto dispongas de suficiente memoria en el servidor. Puedes usar el comando varnishd –help puedes ver que significa cada parámetro.

Hay muchas más opciones configurables pero que sólo hará falta cambiarlas en servidores con mucho tráfico (varios millones de visitas). Si estás interesado, este tutorial al respecto es muy interesante.

A continuación debemos cambiar la configuración del servidor para que deje de escuchar en el puerto 80 de la IP pública (Ya que ese socket está ocupado por Varnish).