{"id":246,"date":"2014-10-19T15:37:17","date_gmt":"2014-10-19T15:41:36","guid":{"rendered":"https:\/\/2d03evarnish-apache.png"},"modified":"2015-07-16T15:37:36","modified_gmt":"2015-07-16T21:37:36","slug":"que-es-varnish-cache","status":"publish","type":"post","link":"https:\/\/emanuelpaxtian.com\/blog\/que-es-varnish-cache\/","title":{"rendered":"\u00bfQU\u00c9 ES VARNISH CACHE?"},"content":{"rendered":"<p>Varnish es un\u00a0acelerador HTTP\u00a0que funciona como un proxy reverso. Se situa por delante del servidor web, cacheando la respuesta de dicho servidor web en memoria. La pr\u00f3xima vez que un visitante visite la misma URL, la p\u00e1gina ser\u00e1 servida desde Varnish en lugar de desde el servidor web, ahorrando recursos en el backend y permitiendo m\u00e1s conexiones simult\u00e1neas.<\/p>\n<p>como balanceador de carga, distribuyendo peticiones a varios servidores o como control de acceso a tu servidor, por ejemplo permitiendo conexiones s\u00f3lo desde la IP o grupo de IPs especificadas.<\/p>\n<p>Las principales caracter\u00edsticas de Varnish son:<\/p>\n<ul>\n<li>Es estable y muy r\u00e1pido, capaz de servir varios cientos de miles de peticiones por segundo, seg\u00fan ciertos benchmarks.<\/li>\n<li>Dispone de un lenguaje propio de configuraci\u00f3n, llamado VCL (Varnish Configuration Language), con el que es posible definir las reglas para cachear contenido. Gracias a esto es extremadamente flexible, pudi\u00e9andose configurar para solucionar problemas muy diversos.<\/li>\n<li>Est\u00e1 escrito en C, y es posible extender su funcionalidad con m\u00f3dulos llamados VMODs, escritos asimismo en C. Puedes ver una lista de VMODs publicados aqu\u00ed.<\/li>\n<li>Ofrece soporte para GZIP y ESI (Edge Side Includes), y es capaz de recomponer una p\u00e1gina usando ESI sin pasar por el back-end. Esto permite cachear fragmentos de la p\u00e1gina usando tiempos de expiraci\u00f3n diferentes, mostrando siempre contenido fresco sin necesidad de borrar de cach\u00e9 las secciones menos cambiantes de la p\u00e1gina.<\/li>\n<\/ul>\n<p><strong>\u00bfC\u00d3MO USAR VARNISH?<\/strong><\/p>\n<p>(Nota:En los ejemplos voy a utilizar el sistema operativo Ubuntu 12.04 y Apache como servidor web).<\/p>\n<p>Una vez instalado Varnish desde el repositorio de tu sistema operativo o compliando el c\u00f3digo 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\u00fablica del servidor.<\/p>\n<p>DAEMON_OPTS=&#8221;-a :80<br \/>\n-T localhost:6082<br \/>\n-f \/etc\/varnish\/default.vcl<br \/>\n-S \/etc\/varnish\/secret<br \/>\n-s malloc,1G&#8221;<br \/>\nLo m\u00e1s interesante de esta sencilla configuraci\u00f3n es el par\u00e1metro -s. Con \u00e9l indicaremos d\u00f3nde queremos guardar la cach\u00e9 (RAM o disco) y cuanto espacio queremos reservar. Obviamente la RAM (malloc) es varios \u00f3rdenes de magnitud m\u00e1s r\u00e1pida que el disco por lo que es recomendable usarla para almacenar la cach\u00e9 siempre y cuanto dispongas de suficiente memoria en el servidor. Puedes usar el comando varnishd &#8211;help puedes ver que significa cada par\u00e1metro.<\/p>\n<p>Hay muchas m\u00e1s opciones configurables pero que s\u00f3lo har\u00e1 falta cambiarlas en servidores con mucho tr\u00e1fico (varios millones de visitas). Si est\u00e1s interesado, este tutorial al respecto es muy interesante.<\/p>\n<p>A continuaci\u00f3n debemos cambiar la configuraci\u00f3n del servidor para que deje de escuchar en el puerto 80 de la IP p\u00fablica (Ya que ese socket est\u00e1 ocupado por Varnish).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Varnish es un\u00a0acelerador HTTP\u00a0que funciona como un proxy reverso. Se situa por delante del servidor web, cacheando la respuesta de dicho servidor web en memoria. La pr\u00f3xima vez que un&hellip;<\/p>\n","protected":false},"author":1,"featured_media":351,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[],"class_list":["post-246","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-general"],"_links":{"self":[{"href":"https:\/\/emanuelpaxtian.com\/blog\/wp-json\/wp\/v2\/posts\/246","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/emanuelpaxtian.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/emanuelpaxtian.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/emanuelpaxtian.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/emanuelpaxtian.com\/blog\/wp-json\/wp\/v2\/comments?post=246"}],"version-history":[{"count":0,"href":"https:\/\/emanuelpaxtian.com\/blog\/wp-json\/wp\/v2\/posts\/246\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/emanuelpaxtian.com\/blog\/wp-json\/wp\/v2\/media\/351"}],"wp:attachment":[{"href":"https:\/\/emanuelpaxtian.com\/blog\/wp-json\/wp\/v2\/media?parent=246"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/emanuelpaxtian.com\/blog\/wp-json\/wp\/v2\/categories?post=246"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/emanuelpaxtian.com\/blog\/wp-json\/wp\/v2\/tags?post=246"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}