<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>
<channel>
	<title>Viva el Pixel &#187; Servidores</title>
	<atom:link href="http://www.vivaelpixel.com/tag/servidores/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.vivaelpixel.com</link>
	<description>Blog sobre Tecnologia y marketing online</description>
	<lastBuildDate>Thu, 02 Sep 2010 20:57:19 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Protegerse de ataques DoS/DDoS con Varnish</title>
		<link>http://www.vivaelpixel.com/2010/03/varnish-protege-ataques-dos-ddos/</link>
		<comments>http://www.vivaelpixel.com/2010/03/varnish-protege-ataques-dos-ddos/#comments</comments>
		<pubDate>Sun, 28 Mar 2010 15:22:49 +0000</pubDate>
		<dc:creator>Andy Kaiser</dc:creator>
				<category><![CDATA[Desarrollo web]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[eZ Publish]]></category>
		<category><![CDATA[Servidores]]></category>
		<category><![CDATA[Varnish]]></category>
		<guid isPermaLink="false">http://www.vivaelpixel.com/?p=681</guid>
		<description><![CDATA[Un reverse proxy puede proteger o minimizar los efectos del ataque Dos/DDoS. Varnish Cache Reverse Proxy, además de acelerar una aplicación web, protege efectivamente ante ataques DoS/DDoS al enviar sólo las peticiones que son completas al servidor web.]]></description>
			<content:encoded><![CDATA[<p>Los ataques de denegación de servicios (D0S) y la variante distribuida (DD0S) suelen ser relativamente habituales. Una vez iniciado el ataque DDoS <a href="http://www.codigogeek.com/2008/02/08/que-hacer-ante-un-ataque-ddos/" target="_blank" class="liexternal">algunos opinan que no es posible detenerlo</a>, otros en cambio que <a href="http://foro.elhacker.net/tutoriales_documentacion/intentando_detener_un_ddos-t137442.0.html" target="_blank" class="liexternal">es posible intentar detener el ataque</a>.  Sin entrar en detalles sobre como resolver estos ataques, es interesante indicar como un <em>reverse proxy</em> puede proteger o minimizar los efectos del ataque Dos/DDoS.</p>
<h3>Varnish Cache</h3>
<p><a href="http://www.vivaelpixel.com/2009/12/varnish-reverse-proxy/" class="liinternal">Varnish Cache Reverse Proxy</a>, además de acelerar una aplicación web, protege efectivamente ante ataques DoS/DDoS al enviar sólo las peticiones que son completas al servidor web. La configuración dependerá del escenario final, sea un solo servidor o arquitecturas basadas en varios servidores. En caso de disponer de un solo servidor e IP podemos configurar el servidor web (Apache) en la IP local y el puerto 80, por ejemplo <em>127.0.0.1:80</em>. Por otro lado, configuramos Varnish en la IP pública y el puerto 80.</p>
<h3>Ejemplo real</h3>
<p>El siguiente gráfico muestra un ejemplo real de como Varnish actúa en el caso de un ataque DoS. Con 550 peticiones al segundo, el servidor tenia una carga no superior a 0.5 y el ataque no afecto al funcionamiento de la web basada en el gestor de contenidos <a href="http://ez.no" target="_blank" class="liexternal">eZ Publish</a>.</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-686" title="varnish-dos" src="http://www.vivaelpixel.com/wp-content/uploads/2010/03/varnish-dos.jpg" alt="" width="430" height="333" /></p>
<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-knowledge">
<ul class="socials">
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Protegerse+de+ataques+DoS%2FDDoS+con+Varnish+-+http://b2l.me/mgs8h&amp;source=shareaholic" rel="nofollow" class="external" title="&iexcl;Comp&aacute;rtelo en Twitter!">&iexcl;Comp&aacute;rtelo en Twitter!</a>
		</li>
		<li class="shr-meneame">
			<a href="http://meneame.net/submit.php?url=http://www.vivaelpixel.com/2010/03/varnish-protege-ataques-dos-ddos/" rel="nofollow" class="external" title="Enviar a Meneame">Enviar a Meneame</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://www.vivaelpixel.com/2010/03/varnish-protege-ataques-dos-ddos/&amp;title=Protegerse+de+ataques+DoS%2FDDoS+con+Varnish&amp;summary=Un%20reverse%20proxy%20puede%20proteger%20o%20minimizar%20los%20efectos%20del%20ataque%20Dos%2FDDoS.%20Varnish%20Cache%20Reverse%20Proxy%2C%20adem%C3%A1s%20de%20acelerar%20una%20aplicaci%C3%B3n%20web%2C%20protege%20efectivamente%20ante%20ataques%20DoS%2FDDoS%20al%20enviar%20s%C3%B3lo%20las%20peticiones%20que%20son%20completas%20al%20servidor%20web.&amp;source=Viva el Pixel" rel="nofollow" class="external" title="Compartir con LinkedIn">Compartir con LinkedIn</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.vivaelpixel.com/2010/03/varnish-protege-ataques-dos-ddos/&amp;title=Protegerse+de+ataques+DoS%2FDDoS+con+Varnish" rel="nofollow" class="external" title="&iexcl;Comp&aacute;rtelo con Digg!">&iexcl;Comp&aacute;rtelo con Digg!</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://www.vivaelpixel.com/2010/03/varnish-protege-ataques-dos-ddos/&amp;title=Protegerse+de+ataques+DoS%2FDDoS+con+Varnish" rel="nofollow" class="external" title="Compartir con del.icio.us">Compartir con del.icio.us</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.vivaelpixel.com/2010/03/varnish-protege-ataques-dos-ddos/&amp;t=Protegerse+de+ataques+DoS%2FDDoS+con+Varnish" rel="nofollow" class="external" title="Compartir con Facebook">Compartir con Facebook</a>
		</li>
		<li class="shr-bitacoras">
			<a href="http://bitacoras.com/anotaciones/http://www.vivaelpixel.com/2010/03/varnish-protege-ataques-dos-ddos/" rel="nofollow" class="external" title="Enviar a Bitacoras">Enviar a Bitacoras</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.vivaelpixel.com/2010/03/varnish-protege-ataques-dos-ddos/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Optimización pageload en Apache2</title>
		<link>http://www.vivaelpixel.com/2010/01/optimizacion-pageload-en-apache2/</link>
		<comments>http://www.vivaelpixel.com/2010/01/optimizacion-pageload-en-apache2/#comments</comments>
		<pubDate>Fri, 01 Jan 2010 19:23:49 +0000</pubDate>
		<dc:creator>Andy Kaiser</dc:creator>
				<category><![CDATA[Desarrollo web]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[SEO/SEM/SMO]]></category>
		<category><![CDATA[Apache2]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[ETags]]></category>
		<category><![CDATA[Firebug]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Optimización]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[Servidores]]></category>
		<category><![CDATA[Yahoo!]]></category>
		<category><![CDATA[Yslow]]></category>
		<guid isPermaLink="false">http://www.vivaelpixel.com/?p=189</guid>
		<description><![CDATA[Como optimizar los tiempos de carga de una página en Apache2, con mod_deflate, mod_headers, mod_expires y Etag para mejorar el SEO y la experiencia de los usuarios.]]></description>
			<content:encoded><![CDATA[<p>Como comentamos en <a href="http://www.vivaelpixel.com/2009/12/promocion-online-y-seo-en-el-2010/" title="Promoción online y SEO en el 2010" target="_self" class="liinternal">un post anterior</a>, en el 2010 un factor importante en los resultados del nuevo algoritmo de búsqueda de Google (Caffeine) será la velocidad de carga de una página. Por lo tanto en nuestros sitios, es imprescindible analizar y optimizar varios factores relacionados. Además al optimizar el tiempo de carga de nuestro sitio también reduciremos el ancho de banda y, dependiendo del caso, los costes del alojamiento y mejoramos la experiencia de los usuarios.</p>
<h3>Análisis</h3>
<p>Para analizar fácilmente la velocidad de carga de nuestro sitio disponemos básicamente de dos extensiones para <a href="https://addons.mozilla.org/es-ES/firefox/addon/1843" target="_blank" class="liexternal">Firefox/Firebug</a>:</p>
<ol>
<li><a href="http://developer.yahoo.com/yslow/" target="_blank" class="liexternal">Yslow</a>, creada por Yahoo!</li>
<li><a href="http://code.google.com/intl/es-ES/speed/page-speed/" target="_blank" class="liexternal">Pagespeed</a>, creada por Google</li>
</ol>
<p>Estos complementos analizan múltiples factores y nos dan sugerencias para optimizar la página analizada. Las dos extensiones son muy parecidas tanto en las pruebas que ejecutan y las sugerencias que indican, pero en Yslow destaca la integración de <a href="http://developer.yahoo.com/yslow/smushit/" target="_blank" class="liexternal">Smush.it™</a>, un optimizador de imágenes. En cambio en Pagespeed, es muy destacable la opción de disponer, en caso de sugerencia, de las alternativas <em>minified</em> u optimizadas de las css y los js, como también analizar e indicar los selectores css poco eficientes.</p>
<h3>Optimización</h3>
<p>Dependiendo de cada servidor y aplicaciones instaladas tendremos que optimizar diferentes factores, pero a modo de ejemplo, en el servidor de este blog era necesario optimizar los <em>Cache-Control Header</em> y la compresión <em>gzip</em>. Tras buscar en Google y leer varios post realice los siguientes pasos para optimizar el servidor:</p>
<h4>1. Compresión gzip con mod_deflate</h4>
<p>Primero hay que activar <em>mod_deflate</em> desde la linea de comando</p>
<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">a2enmod deflate</pre></div></div>
<p>Luego editar el archivo <em>deflate.conf</em> que se encuentra en <em>/etc/apache2/mods-available/deflate.conf</em></p>
<div class="wp_syntax"><div class="code"><pre class="apache" style="font-family:monospace;">        AddOutputFilterByType DEFLATE text/plain
        AddOutputFilterByType DEFLATE text/html
        AddOutputFilterByType DEFLATE text/xml
        AddOutputFilterByType DEFLATE text/css
        AddOutputFilterByType DEFLATE text/javascript
        AddOutputFilterByType DEFLATE image/svg+xml
        AddOutputFilterByType DEFLATE image/x-icon
        AddOutputFilterByType DEFLATE application/xml
        AddOutputFilterByType DEFLATE application/xhtml+xml
        AddOutputFilterByType DEFLATE application/rss+xml
        AddOutputFilterByType DEFLATE application/javascript
        AddOutputFilterByType DEFLATE application/x-javascript
&nbsp;
        AddOutputFilterByType DEFLATE application/x-httpd-php
        AddOutputFilterByType DEFLATE application/x-httpd-fastphp
        AddOutputFilterByType DEFLATE application/x-httpd-eruby
&nbsp;
        DeflateCompressionLevel <span style="color: #ff0000;">9</span>
&nbsp;
<span style="color: #adadad; font-style: italic;"># Netscape 4.X tiene ciertas limitaciones</span>
        <span style="color: #00007f;">BrowserMatch</span> ^Mozilla/<span style="color: #ff0000;">4</span> gzip-only-text/html
&nbsp;
<span style="color: #adadad; font-style: italic;"># Netscape 4.06-4.08 tiene limitaciones</span>
        <span style="color: #00007f;">BrowserMatch</span> ^Mozilla/<span style="color: #ff0000;">4</span>\.0[<span style="color: #ff0000;">678</span>] no-gzip
&nbsp;
<span style="color: #adadad; font-style: italic;"># MSIE enmascarado como Netscape</span>
        <span style="color: #00007f;">BrowserMatch</span> \bMSIE !no-gzip !gzip-only-text/html
&nbsp;
<span style="color: #adadad; font-style: italic;"># Las siguientes lineas sirven para probar que la configuración funciona, en producción hay que comentarlas</span>
 DeflateFilterNote Input instream
 DeflateFilterNote Output outstream
 DeflateFilterNote Ratio ratio
 <span style="color: #00007f;">LogFormat</span> <span style="color: #7f007f;">'&quot;%r&quot; %{outstream}n/%{instream}n (%{ratio}n%%)'</span> deflate
 <span style="color: #00007f;">CustomLog</span> /var/log/apache2/deflate_log deflate</pre></div></div>
<h4>2. Expires headers mediante mod_expires</h4>
<p>Primero activamos el modulo</p>
<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">a2enmod expires</pre></div></div>
<p>Luego editamos o creamos el archivo <em>expires.conf</em> en el directorio <em>/etc/apache2/mods-available/expires.conf</em></p>
<div class="wp_syntax"><div class="code"><pre class="apache" style="font-family:monospace;"><span style="color: #adadad; font-style: italic;">#        ExpiresDefault &quot;access plus 2 months&quot;</span>
&nbsp;
        <span style="color: #00007f;">ExpiresByType</span> image/x-icon <span style="color: #7f007f;">&quot;access plus 1 month&quot;</span>
        <span style="color: #00007f;">ExpiresByType</span> image/png <span style="color: #7f007f;">&quot;access plus 1 month&quot;</span>
        <span style="color: #00007f;">ExpiresByType</span> image/jpg <span style="color: #7f007f;">&quot;access plus 1 month&quot;</span>
        <span style="color: #00007f;">ExpiresByType</span> image/gif <span style="color: #7f007f;">&quot;access plus 1 month&quot;</span>
        <span style="color: #00007f;">ExpiresByType</span> image/jpeg <span style="color: #7f007f;">&quot;access plus 1 month&quot;</span>
        <span style="color: #00007f;">ExpiresByType</span> application/pdf <span style="color: #7f007f;">&quot;access plus 1 month&quot;</span>
        <span style="color: #00007f;">ExpiresByType</span> audio/x-wav <span style="color: #7f007f;">&quot;access plus 1 month&quot;</span>
        <span style="color: #00007f;">ExpiresByType</span> audio/mpeg <span style="color: #7f007f;">&quot;access plus 1 month&quot;</span>
        <span style="color: #00007f;">ExpiresByType</span> video/mpeg <span style="color: #7f007f;">&quot;access plus 1 month&quot;</span>
        <span style="color: #00007f;">ExpiresByType</span> video/mp4 <span style="color: #7f007f;">&quot;access plus 1 month&quot;</span>
        <span style="color: #00007f;">ExpiresByType</span> video/quicktime <span style="color: #7f007f;">&quot;access plus 1 month&quot;</span>
        <span style="color: #00007f;">ExpiresByType</span> video/x-ms-wmv <span style="color: #7f007f;">&quot;access plus 1 month&quot;</span>
        <span style="color: #00007f;">ExpiresByType</span> application/x-shockwave-flash <span style="color: #7f007f;">&quot;access 1 month&quot;</span>
&nbsp;
        <span style="color: #00007f;">ExpiresByType</span> text/css <span style="color: #7f007f;">&quot;access plus 1 hour&quot;</span>
        <span style="color: #00007f;">ExpiresByType</span> text/javascript <span style="color: #7f007f;">&quot;access plus 1 hour&quot;</span></pre></div></div>
<h4>3. Desactivar ETags</h4>
<p>Añadir las siguientes lienas al archivo <em>/etc/apache2/apache2.conf</em></p>
<div class="wp_syntax"><div class="code"><pre class="apache" style="font-family:monospace;"><span style="color: #00007f;">Header</span> unset ETag
FileETag <span style="color: #0000ff;">None</span></pre></div></div>
<h4>4. Reiniciar Apache para activar los cambios</h4>
<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>apache2 restart</pre></div></div>
<p>Ya solo queda volver a comprobar la página con las extensiones de Firebug y comparar los resultados.</p>
<h4>Enlaces de interes</h4>
<ul>
<li><a href="http://code.google.com/intl/es-ES/speed/page-speed/docs/rules_intro.html" target="_blank" class="liexternal">Recomendaciones sobre rendimiento web de Google</a></li>
<li><a href="http://developer.yahoo.com/performance/rules.html" target="_blank" class="liexternal">Recomendaciones de Yahoo!</a></li>
<li><a href="http://www.realityloop.com/blog/2009/08/19/optimizing-page-load-times-using-moddeflate-modexpires-etag-apache2" target="_blank" class="liexternal">Tutorial sobre Apache2, mod_deflate, mod_expires y ETag</a></li>
<li><a href="http://www.askapache.com/htaccess/apache-speed-etags.html" target="_blank" class="liexternal">Tutorial sobre ETag</a> (Esta web tiene otros posts relacionados con optimización de Apache)</li>
</ul>
<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-knowledge">
<ul class="socials">
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Optimizaci%C3%B3n+pageload+en+Apache2+-+http://b2l.me/cqq9r&amp;source=shareaholic" rel="nofollow" class="external" title="&iexcl;Comp&aacute;rtelo en Twitter!">&iexcl;Comp&aacute;rtelo en Twitter!</a>
		</li>
		<li class="shr-meneame">
			<a href="http://meneame.net/submit.php?url=http://www.vivaelpixel.com/2010/01/optimizacion-pageload-en-apache2/" rel="nofollow" class="external" title="Enviar a Meneame">Enviar a Meneame</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://www.vivaelpixel.com/2010/01/optimizacion-pageload-en-apache2/&amp;title=Optimizaci%C3%B3n+pageload+en+Apache2&amp;summary=Como%20optimizar%20los%20tiempos%20de%20carga%20de%20una%20p%C3%A1gina%20en%20Apache2%2C%20con%20mod_deflate%2C%20mod_headers%2C%20mod_expires%20y%20Etag%20para%20mejorar%20el%20SEO%20y%20la%20experiencia%20de%20los%20usuarios.&amp;source=Viva el Pixel" rel="nofollow" class="external" title="Compartir con LinkedIn">Compartir con LinkedIn</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.vivaelpixel.com/2010/01/optimizacion-pageload-en-apache2/&amp;title=Optimizaci%C3%B3n+pageload+en+Apache2" rel="nofollow" class="external" title="&iexcl;Comp&aacute;rtelo con Digg!">&iexcl;Comp&aacute;rtelo con Digg!</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://www.vivaelpixel.com/2010/01/optimizacion-pageload-en-apache2/&amp;title=Optimizaci%C3%B3n+pageload+en+Apache2" rel="nofollow" class="external" title="Compartir con del.icio.us">Compartir con del.icio.us</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.vivaelpixel.com/2010/01/optimizacion-pageload-en-apache2/&amp;t=Optimizaci%C3%B3n+pageload+en+Apache2" rel="nofollow" class="external" title="Compartir con Facebook">Compartir con Facebook</a>
		</li>
		<li class="shr-bitacoras">
			<a href="http://bitacoras.com/anotaciones/http://www.vivaelpixel.com/2010/01/optimizacion-pageload-en-apache2/" rel="nofollow" class="external" title="Enviar a Bitacoras">Enviar a Bitacoras</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.vivaelpixel.com/2010/01/optimizacion-pageload-en-apache2/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Varnish Reverse Proxy</title>
		<link>http://www.vivaelpixel.com/2009/12/varnish-reverse-proxy/</link>
		<comments>http://www.vivaelpixel.com/2009/12/varnish-reverse-proxy/#comments</comments>
		<pubDate>Tue, 29 Dec 2009 22:42:44 +0000</pubDate>
		<dc:creator>Andy Kaiser</dc:creator>
				<category><![CDATA[CMS]]></category>
		<category><![CDATA[Desarrollo web]]></category>
		<category><![CDATA[Cache]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Proxy]]></category>
		<category><![CDATA[Servidores]]></category>
		<category><![CDATA[Varnish]]></category>
		<guid isPermaLink="false">http://www.vivaelpixel.com/?p=146</guid>
		<description><![CDATA[Actualmente las aplicaciones web requieren decenas de consultas SQL para generar una sola página (por ejemplo en el caso de los gestores de contenido). Esto se convierte en el cuello de botella más común en las webs de millones de páginas vista. En estos casos podemos utilizar varias estrategias de cache, por ejemplo el uso [...]]]></description>
			<content:encoded><![CDATA[<p>Actualmente las aplicaciones web requieren decenas de consultas SQL para generar una sola página (por ejemplo en el caso de los gestores de contenido). Esto se convierte en el cuello de botella más común en las webs de millones de páginas vista. En estos casos podemos utilizar varias estrategias de cache, por ejemplo el uso de <a href="http://www.memcached.org/" target="_blank" class="liexternal">memcached </a>y/o el uso de reverse proxies como <a href="http://nginx.net/" target="_blank" class="liexternal">Nginx</a>, <a href="http://www.danga.com/perlbal/" target="_blank" class="liexternal">Perlbal</a>, <a href="http://www.squid-cache.org/" target="_blank" class="liexternal">Squid </a>and <a href="http://varnish.projects.linpro.no/" target="_blank" class="liexternal">Varnish</a>. La elección de uno u otro dependerá de cada proyecto, pero en este post hablaré sobre Varnish Cache, el cual he usado con éxito en varios proyectos.</p>
<h3>Historia</h3>
<p>Varnish fue creado por el periódico noruego <a href="http://www.vg.no/" target="_blank" class="liexternal">Verdens Gang</a> (VG). El diseño y desarrollo inicial fue realizado por el consultor danés <a href="http://en.wikipedia.org/wiki/Poul-Henning_Kamp" target="_blank" rel="nofollow" class="liwikipedia">Poul-Henning Kamp</a> y actualmente, el desarrollo, está gestionado por la consultora noruega <a href="http://www.redpill-linpro.com/" target="_blank" class="liexternal">Linpro</a>.</p>
<p>Varnish tiene licencia de código abierto (en concreto licencia FreeBSD), pero existe soporte comercial por parte de Linpro y otros.</p>
<h3>Arquitectura</h3>
<p>Quizás lo más destacable de Varnish es que desde el principio se diseño y programó teniendo en cuenta los sistemas operativos modernos, resumiendo, es un <a href="http://varnish.projects.linpro.no/wiki/ArchitectNotes" target="_blank" class="liexternal">programa moderno</a>.</p>
<p>Varnish almacena los datos en la memoria virtual y deja la tarea de decidir lo que se almacena en la memoria y lo que se guarda en el disco al sistema operativo. Esto ayuda a evitar la situación en la que el sistema operativo comienza a copiar<em> </em>datos al disco cuando la aplicación esta haciendo lo mismo.</p>
<p>Una característica significativa de Varnish es que cada conexión cliente se asigna a un subproceso  independiente. Cuando se alcanza el límite configurado en el número de subprocesos activos, las conexiones entrantes se colocan en cola y sólo cuando esta cola alcanza su límite configurado será rechazado las conexiones entrantes.</p>
<p>Con el fin de reducir el número de llamadas al sistema a un mínimo, los datos de registro o logs se almacenan en la memoria compartida, y la tarea de escribir los registros en el disco se delega a una aplicación separada.</p>
<h3>Características</h3>
<p>Podemos destacar las siguientes características de Varnish:</p>
<ul>
<li>Diseño moderno</li>
<li>VCL, es un lenguaje de configuración que permite una gran flexibilidad y adaptación. Incluso es posible añadir <a href="http://varnish.projects.linpro.no/wiki/ArchitectureInlineC" target="_blank" class="liexternal">código C</a> con lo que es posible expandir Varnish sin modificar el código fuente.</li>
<li><em>Load balancing</em></li>
<li>Soporte parcial de<em> <a href="http://www.w3.org/TR/esi-lang" target="_blank" class="liexternal">ESI</a></em></li>
<li><a href="http://varnish.projects.linpro.no/wiki/WebGui" target="_blank" class="liexternal">Web GUI</a> (<em>Beta</em>), muy útil en caso de configuraciones en cluster</li>
<li>Posibilidad de cambiar configuraciones sobre la marcha</li>
<li>Reescritura y redireccionamiento de url (no es necesario un programa externo)</li>
<li>Consulta de estadísticas y logs en tiempo real</li>
</ul>
<h3>Rendimiento</h3>
<p>Como ya he comentado anteriormente, el rendimiento de Varnish y otros <em>reverse proxies </em>(como por ejemplo Squid) depende de múltiples factores y la configuración que se utilice, por lo que siempre es recomendable analizar cada situación y decidirse por una aplicación u otra. Por ejemplo en <a href="http://deserialized.com/reverse-proxy-performance-varnish-vs-squid-part-2" target="_blank" class="liexternal">este post</a> podemos ver una comparación entre Squid y Varnish.</p>
<h3>Ejemplos reales</h3>
<p>Estas son algunas webs de alto tráfico  que utilizan Varnish</p>
<ul>
<li><a href="http://www.vg.no/" target="_blank" class="liexternal">vg.no</a></li>
<li><a href="http://www.mashable.com" target="_blank" class="liexternal">mashable.com</a></li>
<li><a href="http://www.wikia.com" target="_blank" class="liexternal">wikia.com</a></li>
<li><a href="http://www.creativecommons.org" target="_blank" class="liexternal">creativecommons.org</a></li>
<li><a href="http://wordpress.com/" target="_blank" class="liexternal">wordpress.com</a></li>
</ul>
<p>Por último, en uno de mis proyectos, el cliente quería separar completamente de Internet el acceso a su gestor de contenidos, pero mantener una web actualizada al segundo y con posibilidades de disponer de servidores distribuidos en Europa y América. Con estos requisitos, implementamos Varnish en los servidores públicos del cliente cacheando el servidor de contenido que se encontraba en la red privada del cliente. Gracias a esta arquitectura, los visitantes de la web solo acceden al servidor de Varnish, con lo que no tienen acceso a otros servicios como por ejemplo php, mysql o ssh. A su vez, el usuario final visualiza las páginas en menor tiempo al cargarlas desde Varnish.</p>
<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-knowledge">
<ul class="socials">
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Varnish+Reverse+Proxy+-+http://b2l.me/cjn9d&amp;source=shareaholic" rel="nofollow" class="external" title="&iexcl;Comp&aacute;rtelo en Twitter!">&iexcl;Comp&aacute;rtelo en Twitter!</a>
		</li>
		<li class="shr-meneame">
			<a href="http://meneame.net/submit.php?url=http://www.vivaelpixel.com/2009/12/varnish-reverse-proxy/" rel="nofollow" class="external" title="Enviar a Meneame">Enviar a Meneame</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://www.vivaelpixel.com/2009/12/varnish-reverse-proxy/&amp;title=Varnish+Reverse+Proxy&amp;summary=Actualmente%20las%20aplicaciones%20web%20requieren%20decenas%20de%20consultas%20SQL%20para%20generar%20una%20sola%20p%C3%A1gina%20%28por%20ejemplo%20en%20el%20caso%20de%20los%20gestores%20de%20contenido%29.%20Esto%20se%20convierte%20en%20el%20cuello%20de%20botella%20m%C3%A1s%20com%C3%BAn%20en%20las%20webs%20de%20millones%20de%20p%C3%A1ginas%20vista.%20En%20estos%20casos%20podemos%20utilizar%20varias%20estrategias&amp;source=Viva el Pixel" rel="nofollow" class="external" title="Compartir con LinkedIn">Compartir con LinkedIn</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.vivaelpixel.com/2009/12/varnish-reverse-proxy/&amp;title=Varnish+Reverse+Proxy" rel="nofollow" class="external" title="&iexcl;Comp&aacute;rtelo con Digg!">&iexcl;Comp&aacute;rtelo con Digg!</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://www.vivaelpixel.com/2009/12/varnish-reverse-proxy/&amp;title=Varnish+Reverse+Proxy" rel="nofollow" class="external" title="Compartir con del.icio.us">Compartir con del.icio.us</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.vivaelpixel.com/2009/12/varnish-reverse-proxy/&amp;t=Varnish+Reverse+Proxy" rel="nofollow" class="external" title="Compartir con Facebook">Compartir con Facebook</a>
		</li>
		<li class="shr-bitacoras">
			<a href="http://bitacoras.com/anotaciones/http://www.vivaelpixel.com/2009/12/varnish-reverse-proxy/" rel="nofollow" class="external" title="Enviar a Bitacoras">Enviar a Bitacoras</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.vivaelpixel.com/2009/12/varnish-reverse-proxy/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
