Actualmente se busca que nuestras aplicaciones web respondan con mucha mayor rapidez a la cantidad de request, para ello utilizaremos Varnish.
Varnish es un acelerador HTTP que funciona como un proxy reverso. Se sitúa por delante del servidor web, cacheando la respuesta de dicho servidor web en memoria. La próxima vez que un visitante visite la misma dirección 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. También se puede usar 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éndose configurar para solucionar problemas muy diversos.
- Está escrito en C, y es posible extender su funcionalidad con módulos llamados VMODs.
- Ofrece soporte para GZIP y ESI (Edge Side Includes), el cual 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.
Instalación de Varnish 4 sobre Centos 7 usando como servidor web Nginx.
1. Agregar repositorio EPEL
[myserver]# rpm -iUvh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
2. Instalación
Actualizamos las dependencias del servidor e instalamos Varnish
[myserver]# yum -y update [myserver]# yum -y install varnish
3. Configuración
Editaremos el archivo de configuración del servidor web Nginx, que por defecto esta apuntando al puerto 80, lo cambiaremos al puerto 8080.
[myserver]# vim /etc/nginx/nginx.conf
server { listen 8080; server_name localhost; ...
Ahora se editara el archivo de configuración de Varnish, se cambiara el puerto para que apunte al 80, de esta forma cada vez que se hagan solicitudes a la aplicación web será varnish quien las responda.
[myserver]# vim /etc/sysconfig/varnish
VARNISH_LISTEN_PORT=80
4. Inicio de servicio
[myserver]# service varnish status
[myserver]# service varnish start
[myserver]# chkconfig varnish on