Differences

This shows you the differences between two versions of the page.

Link to this comparison view

varnish [2012/02/14 21:00]
varnish [2012/02/14 21:00] (current)
Line 1: Line 1:
 +====== varnish ======
 +
 +Varnish is a web accelerator.
 +
 +Wikipedia: A web accelerator is a proxy server that reduces web site access times. They can be a self-contained hardware appliance or installable software.
 +
 +==== Configuration ====
 +
 +Edit ''/​etc/​varnish/​default.vcl'':​
 +<​code>​
 +backend default {
 +  .host = "​127.0.0.1";​
 +  .port = "​80";​
 +}
 +</​code>​
 +
 +The web server must accept connections on that IP address and serve the content. ​ A standard virtualhost would listen only on public IP addresses.
 +
 +Start varnishd:
 +<​code>​
 +varnishd -f /​etc/​varnish/​default.vcl -s malloc,1G -T 127.0.0.1:​2000 -a 0.0.0.0:​8080
 +</​code>​
 +
 +==== Notes ====
 +
 +  * Varnish can have several backends defined and can you can even join several backends together into clusters of backends for load balancing purposes.
 +  * Be aware that every object that is stored also carries overhead that is kept outside the actually storage area. So, even if you specify -s malloc,16G varnish might actually use double that. Varnish has a overhead of about 1k per object. So, if you have lots of small objects in your cache the overhead might be significant.
 +  * You can use Varnish to cache content from different servers, effectively splitting URLs across many backends. ​ Fex: http://​domain/​ pulls from 1.2.3.4:80 while http://​domain/​images/​ pulls from 5.6.7.8:80.
 +  * Varnish has a "saint mode" where it will only send a cache if there is a bad request returnedV from the original webserver. ​ Fex: Site returns HTTP 500 because it is overloaded, so Varnish serves stale content. ​ See: [[https://​www.varnish-cache.org/​docs/​3.0/​tutorial/​handling_misbehaving_servers.html#​saint-mode|here]]
 +  * Varnish can act as a high availability server, balancing load between two backends. ​ Fex: Two  servers on different IP addresses are handling the backend load.  See: [[https://​www.varnish-cache.org/​docs/​3.0/​tutorial/​advanced_backend_servers.html|here]]
 +
 +==== Ubuntu ====
 +
 +<​code>​
 +curl http://​repo.varnish-cache.org/​debian/​GPG-key.txt | apt-key add -
 +echo "deb http://​repo.varnish-cache.org/​ubuntu/​ lucid varnish-3.0"​ >> /​etc/​apt/​sources.list
 +apt-get update
 +apt-get install varnish
 +</​code>​