Backend servers

Varnish has a concept of backend or origin servers. A backend server is the server providing the content Varnish will accelerate via the cache.

Our first task is to tell Varnish where it can find its content. Start your favorite text editor and open the Varnish default configuration file. If you installed from source this is /usr/local/etc/varnish/default.vcl, if you installed from a package it is probably /etc/varnish/default.vcl.

If you’ve been following the tutorial there is probably a section of the configuration that looks like this:

vcl 4.0;

backend default {
    .host = "www.varnish-cache.org";
    .port = "80";
}

This means we set up a backend in Varnish that fetches content from the host www.varnish-cache.org on port 80.

Since you probably don’t want to be mirroring varnish-cache.org we need to get Varnish to fetch content from your own origin server. We’ve already bound Varnish to the public port 80 on the server so now we need to tie it to the origin.

For this example, let’s pretend the origin server is running on localhost, port 8080.:

vcl 4.0;

backend default {
  .host = "127.0.0.1";
  .port = "8080";
}

Varnish can have several backends defined and can even join several backends together into clusters of backends for load balancing purposes, having Varnish pick one backend based on different algorithms.

Next, let’s have a look at some of what makes Varnish unique and what you can do with it.