Varnish for BeginnersShielding Drupal from the internet
http://adammalone.net | http://drupal.org/user/1295980 | @adammalone
By Adam Malone
What is Varnish
http://adammalone.net | http://drupal.org/user/1295980 | @adammalone
● Reverse proxy HTTP accelerator
● Apache/Nginx
● Memory based
Varnish Installation
(yum|apt-get|brew) install varnish
CentOS installation requires varnish repo
http://adammalone.net | http://drupal.org/user/1295980 | @adammalone
Varnish Configuration
http://adammalone.net | http://drupal.org/user/1295980 | @adammalone
DAEMON_OPTS="-a :80 \ -u varnish -g varnish \ -T localhost:6082 \ -f /etc/varnish/adam.vcl \ -S /etc/varnish/secret \ -s malloc,256M"
backend default { .host = "127.0.0.1"; .port = "8234";}
sub vcl...
/etc/varnish/default.vcl /etc/sysconfig/varnish
VCL
subvcl_recvvcl_pipevcl_fetchvcl_delivervcl_error
http://adammalone.net | http://drupal.org/user/1295980 | @adammalone
return()pipefetchrestartdeliverpasslookuperror
VCL docsFour Kitchens VCL
request objsreqbesresp
Shielding Drupal from the Internet
http://adammalone.net | http://drupal.org/user/1295980 | @adammalone
Checking Varnish works
● Inspecting Headers
● Watch the network tab
● Check varnishlog (more later)
● isvarnishworking.com
http://adammalone.net | http://drupal.org/user/1295980 | @adammalone
Breaking Varnish
● Setting $_SESSION
○ Authenticated users do not benefit
○ Check {sessions} table
● Cookies
● Unique query paths
● .htaccesshttp://adammalone.net | http://drupal.org/user/1295980 | @adammalone
Comparison to other caches
● Drupal cache tables
● Boost
● MongoDB
● Memcache
http://adammalone.net | http://drupal.org/user/1295980 | @adammalone
Varnish Tools
● varnishstat
● varnishlog
● varnishncsa
● varnishhist
http://adammalone.net | http://drupal.org/user/1295980 | @adammalone
Extending Varnish
● ESI
● Varnish mods (vmods)
● Don't be too greedy when caching
● Don't deliver too promiscuously
http://adammalone.net | http://drupal.org/user/1295980 | @adammalone
Gotchas
Questions
http://adammalone.net
http://adammalone.net | http://drupal.org/user/1295980 | @adammalone