Accélérer ses applications avec Varnish


Ce service permet d'accélérer grandement le rendu des éléments d'une page web statique tel que les images et code CSS. Il peut aussi être utilisé pour de la répartition de charge bien qu'il ne gère par de terminaison SSL. (Il y aura alors besoin d'un reverse proxy en amont avec Nginx par exemple).

Documentation :

Installation

Très simple avec seulement cette commande :

apt install varnish

Les options par défaut sont déjà pas mal.

Configuration

Voici un exemple simple pour mettre en cache des fichiers PHP et quelqu'uns terminant par .png, .css, .js, etc.

vcl 4.0;

backend default {
    .host = "IP_DU_SERVEUR";
    .port = "80";
}

# En réception
sub vcl_recv {
# Si ça doit concerner plusieurs sites :
#   if (req.http.host ~ "(wiki\.bruno-tatu\.com)") {
#        set req.backend_hint = default;
#    }

   if (req.url ~ "^/[^?]+\.(jpeg|jpg|png|gif|ico|js|css|txt|gz|zip|lzma|bz2|tgz|tbz|html|htm)(\?.*|)$") {
        unset req.http.cookie;
    }
   if (req.url ~ "(fetch.php|css.php|indexer.php)") {
        unset req.http.cookie;
    }
}


sub vcl_backend_response {
    if (beresp.status == 403 || beresp.status == 404 || beresp.status == 503 || beresp.status == 500) {
        set beresp.ttl = 10s;
    } else {
        set beresp.ttl = 3600s;
        unset beresp.http.set-cookie;
    }

}

# Sortie de réponse aux Internautes
sub vcl_deliver {

   if (req.url ~ "^/[^?]+\.(jpeg|jpg|png|gif|ico|js|css|txt|gz|zip|lzma|bz2|tgz|tbz|html|htm)(\?.*|)$") {
        unset resp.http.Via;
        unset resp.http.X-Varnish;
        unset resp.http.Server;
    }
   if (req.url ~ "(fetch.php|css.php|indexer.php)") {
        unset resp.http.Via;
        unset resp.http.X-Varnish;
        unset resp.http.Server;
    }
}
  • Dernière modification: 2019/09/14 23:22