How To Install Varnish

To significantly speed up web applications, there is a HTTP web caching accelerator called Varnish. Its main point is to cache contents to speed up the delivery of web pages to its end users. The installation of Varnish may be troublesome, but here are the steps I use to get it working on my own server and for Drupal sites:

  1. Choose your type of server environment. My server runs on CentOS so these steps may not match exactly depending on your server setup.
  2. Get Varnish by installing from the Varnish documentation.
  3. Start it up: /etc/init.d/varnish start.
  4. Verify your Apache Listen Port from vi /etc/httpd/conf/httpd.conf. It is usually set to Port 80 so make sure that you will be using a different Port for Varnish. To check, use sudo netstat -ltnp | grep ':80' and make sure the results only include httpd, which stands for the Apache server.
  5. The default settings for varnish is located at vi /etc/sysconfig/varnish and make sure VARNISH_LISTEN_PORT=6081 is set. If this is the same port as Apache, change it to another port. Save your changes or leave the default options.
  6. Then configure the logic of Varnish at vi /etc/varnish/default.vcl ensuring that .port= "80" or whatever the Apache Listen Port is setup as. My default config looks like:

backend default { .host = "127.0.0.1"; .port = "80"; .connect_timeout = 600s; .first_byte_timeout = 600s; .between_bytes_timeout = 600s; } 07. For more expert advice on how to better set up the .vcl, I used FourKitchens Varnish as reference. 08. After all of the configurations, it is now time to restart your server /etc/init.d/httpd restart and varnish /etc/init.d/varnish restart. 09. For Drupal, install the Varnish module using Drush. 10. Edit your site’s settings.php and include these at the bottom:

$conf['cache_backends'][] = 'sites/all/modules/varnish/varnish.cache.inc'; $conf['cache_class_cache_page'] = 'VarnishCache'; $conf['reverse_proxy'] = TRUE; $conf['page_cache_invoke_hooks'] = FALSE; $conf['cache'] = 1; $conf['cache_lifetime'] = 0; $conf['page_cache_maximum_age'] = 21600; $conf['reverse_proxy_header'] = 'HTTP_X_FORWARDED_FOR'; $conf['reverse_proxy_addresses'] = array('127.0.0.1'); $conf['omit_vary_cookie'] = TRUE; 11. Enable the module and make sure to set the expired caching in the /admin/config/development/performance. 12. Then in /admin/config/development/varnish verify that the control terminal has the 127.0.0.1:6082 and your varnish control key comes from vi /etc/varnish/secret. 13. Save configuration and if all is done right, the Status on the bottom should be a Green Checkmark with “Varnish running”.

Author Bio

Frances Naty Go is the founder of Goldlilys Media, where she helps mission-driven organizations turn their websites into clear, durable systems that support meaningful work over time. She works with museums, nonprofits, health and wellness brands, higher education, life sciences, travel organizations, and expert-led businesses.

With a background in Computer Science from UC San Diego, Frances brings a thoughtful, strategic approach to building digital experiences that educate, orient, and build trust, without unnecessary complexity.