Skip to content

Instantly share code, notes, and snippets.

@benbonnet
Last active January 28, 2018 02:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save benbonnet/a4a2856aa93b373cbe07a61166f21d6e to your computer and use it in GitHub Desktop.
Save benbonnet/a4a2856aa93b373cbe07a61166f21d6e to your computer and use it in GitHub Desktop.

Simple varnish in front of nginx

Modify to run better on uuntu latest

Installing :

sudo apt-get update
sudo apt-get install nginx
curl -L https://packagecloud.io/varnishcache/varnish5/gpgkey | sudo apt-key add -
sudo apt update
sudo apt install varnish
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install php7.1-fpm php7.1-common php7.1-mbstring php7.1-xmlrpc php7.1-gd php7.1-xml php7.1-mysql php7.1-cli php7.1-mcrypt php7.1-zip php7.1-curl

Basic conf :

vcl 4.0;

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

sub vcl_recv {
        if (req.method == "PURGE") {
                ban("req.http.host == " + req.http.host +
                      " && req.url == " + req.url);
                return (synth(200, "Ban added"));
        }
}

sub vcl_hash {
    hash_data(req.url);
    if (req.http.host) {
        hash_data(req.http.host);
    } else {
        hash_data(server.ip);
    }
    return (lookup);
}

sub vcl_backend_response {
    set beresp.ttl = 1y;
}

sub vcl_deliver {
}

Custom commands :

sudo /usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -S /etc/varnish/secret
curl -X PURGE http://varnish.dee.sx/
varnishadm "ban req.http.host == varnish.dee.sx && req.url ~ \"/\""
sudo vi  /etc/varnish/default.vcl

TODO : add purger

acl purgers {
  "localhost";
  "127.0.0.1";
  "varnish.dee.sx";
}

ref : https://varnish-cache.org/docs/5.0/users-guide/purging.html

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment