diff --git a/HowtoVarnish.md b/HowtoVarnish.md index ee6a86bb..42af5852 100644 --- a/HowtoVarnish.md +++ b/HowtoVarnish.md @@ -24,28 +24,29 @@ Copyright (c) 2006-2014 Varnish Software AS -`/etc/default/varnish` : +~~~ +# rm /etc/default/varnish* +# cp -a /lib/systemd/system/varnish.service /etc/systemd/system +# systemctl daemon-reload +~~~ + +`/etc/systemd/system/varnish.service` : ~~~ -umask 022 -DAEMON_OPTS="-a 0.0.0.0:80 \ - -T localhost:6082 \ - -f /etc/varnish/default.vcl \ - -S /etc/varnish/secret \ - -s malloc,2G \ - -p thread_pools= \ - -p thread_pool_add_delay=2 \ - -p thread_pool_min=500 \ - -p thread_pool_max=5000" +ExecStart=/usr/sbin/varnishd -a 0.0.0.0:80 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,2G -p thread_pools= -p thread_pool_add_delay=2 -p thread_pool_min=500 -p thread_pool_max=5000 ~~~ Détails de certaines options : -* `-a` : spécifie {IP,port} sur lequel Varnish écoute pour les requêtes HTTP. On peut ainsi spécifier une IP secondaire pour cœxister avec un autre service HTTP (Apache, Nginx) sur le port 80 (*-a 192.0.2.1:80*) ou alors faire écouter Varnish uniquement en local (*-a 127.0.0.1:8080*) ou encore le faire écouter de partout (*-a 0.0.0.0:80*) +* `-a` : spécifie *IP*:*port* sur lequel Varnish écoute pour les requêtes HTTP. On peut ainsi spécifier une IP secondaire pour cœxister avec un autre service HTTP (Apache, Nginx) sur le port 80 (*-a 192.0.2.1:80*) ou faire écouter Varnish uniquement en local (*-a 127.0.0.1:8080*) ou alors le faire écouter de partout (*-a 0.0.0.0:80*) ou même spécifier plusieurs IP (*-a 0.0.0.0:80,127.0.0.1:81*) * `-s` : spécifie où est stocké le cache. Cela peut être en mémoire (*-s malloc,2G*) et/ou dans un fichier (*-s file,varnish_storage.bin,8G*) * `-T` : spécifie l'interface d'admin web de Varnish * `-f` : spécifie le fichier des règles Varnish au format VCL (*Varnish Configuration Language*) +Note 1 : le fichier */etc/default/varnish* [n'est malheureusement plus utilisé avec Systemd](https://bugs.debian.org/749272) + +Note 2 : avant Debian 8, [Varnish ne supportait pas d'être lancé avec *umask 077*, c'est corrigé en Debian Jessie](https://bugs.debian.org/696504) + ### default.vcl Les règles Varnish définissent la mise en cache en utilisant une syntaxe particulière : le VCL (*Varnish Configuration Language*). @@ -59,7 +60,7 @@ backend default { } ~~~ -Pour vérifier ses règles : +Pour vérifier ses règles (ceci est fait par défaut lors d'un redémarrage) : ~~~ # varnishd -Cf /etc/varnish/default.vcl @@ -100,7 +101,7 @@ Voyons un exemple simple : sub vcl_recv { if (req.http.host ~ "(www\.example\.com|example\.com)") { - set req.backend = default; + set req.backend_hint = default; } if (req.url ~ "^/images") { @@ -109,7 +110,7 @@ sub vcl_recv { } sub vcl_backend_response { - if (req.url ~ "\.(png|gif|jpg)$") { + if (bereq.url ~ "\.(png|gif|jpg)$") { unset beresp.http.set-cookie; set beresp.ttl = 3600s; } @@ -296,7 +297,7 @@ Voici un certain nombre d'actions possibles : ~~~ # Renvoyer vers un backend -set req.backend = baz; +set req.backend_hint = baz; # Supprimer les cookies dans la requête unset req.http.cookie; remove req.http.cookie;