diff --git a/HowtoVarnish.md b/HowtoVarnish.md index c0797797..61bd4a2d 100644 --- a/HowtoVarnish.md +++ b/HowtoVarnish.md @@ -3,9 +3,9 @@ title: Howto Varnish categories: web HA cache ... -* Documentation : +* Documentation : -Varnish est un reverse-proxy HTTP. Il se met typiquement devant des serveurs HTTP et garde en cache les réponses autant que possible. Il gère également (un peu) le load-balancing entre les serveurs HTTP. +[Varnish](https://www.varnish-cache.org/) est un reverse-proxy HTTP. Il se met typiquement devant des serveurs HTTP et garde en cache les réponses autant que possible. Il gère également (un peu) le load-balancing entre les serveurs HTTP. ## Installation @@ -13,49 +13,59 @@ Varnish est un reverse-proxy HTTP. Il se met typiquement devant des serveurs HTT # apt install varnish # varnishd -V -varnishd (varnish-4.0.2 revision bfe7cd1) +varnishd (varnish-6.1.1 revision efc2f6c1536cf2272e471f5cff5f145239b19460) Copyright (c) 2006 Verdens Gang AS -Copyright (c) 2006-2014 Varnish Software AS +Copyright (c) 2006-2015 Varnish Software AS ~~~ ## Configuration de base ### varnishd -Le fichier `/etc/default/varnish` [n'est plus utilisé en Debian 8 avec Systemd](https://bugs.debian.org/749272). Malheureusement cela provoque un bug : le script `/usr/share/varnish/reload-vcl` l'utilise toujours... pour éviter toute confusion, on supprime */etc/default/varnish* et l'on remplace *ExecReload=* par un script minimal. +Le fichier `/etc/default/varnish` [n'est plus utilisé avec Systemd](https://bugs.debian.org/749272). Pour éviter toute confusion, on supprime ces fichiers : ~~~ # rm /etc/default/varnish* +~~~ + +Pour modifier la configuration, on copie l'unité Systemd : + +~~~ # cp -a /lib/systemd/system/varnish.service /etc/systemd/system ~~~ -`/etc/systemd/system/varnish.service` (ne pas oublier de `systemctl daemon-reload` à chaque modification) : +Puis l'on personnalise la configuration via `/etc/systemd/system/varnish.service` (ne pas oublier de `systemctl daemon-reload` à chaque modification) : ~~~ ExecStart=/usr/sbin/varnishd -F -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 -ExecReload=/etc/varnish/reload-vcl.sh ~~~ -`/etc/varnish/reload-vcl.sh` (à mettre en *chmod 700* bien sûr) : - -~~~{.bash} -#!/bin/sh -UUID=`cat /proc/sys/kernel/random/uuid` -/usr/sbin/varnishd -C -f /etc/varnish/default.vcl >/dev/null \ - && /usr/bin/varnishadm -T localhost:6082 -S /etc/varnish/secret "vcl.load vcl_$UUID /etc/varnish/default.vcl" \ - && /usr/bin/varnishadm -T localhost:6082 -S /etc/varnish/secret "vcl.use vcl_$UUID" -~~~ - -Détails de certaines options de [varnishd](http://www.varnish-cache.org/docs/4.0/reference/varnishd.html) : +Détails de certaines options de [varnishd](http://www.varnish-cache.org/docs/6.1/reference/varnishd.html) : * `-a` : spécifie *IP*:*port* sur lequel Varnish écoute pour les requêtes HTTP. On peut ainsi spécifier une IP secondaire pour coexister 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*) * `-T` : spécifie l'interface d'admin de Varnish, accessible avec `varnishadm` * `-f` : spécifie le fichier des règles Varnish au format VCL (*Varnish Configuration Language*) * `-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*) -Note : avant Debian 8, [Varnish ne supportait pas d'être lancé avec *umask 077*, c'est corrigé en Debian Jessie](https://bugs.debian.org/696504) +> *Note* : Pour Debian 8, le script `/usr/share/varnish/reload-vcl` utilise toujours `/etc/default/varnish`... on remplace donc `ExecReload=` par un script minimal : +> +> ~~~ +> ExecReload=/etc/varnish/reload-vcl.sh +> ~~~ +> +> avec `/etc/varnish/reload-vcl.sh` (à mettre en *chmod 700* bien sûr) : +> +> ~~~{.bash} +> #!/bin/sh +> UUID=`cat /proc/sys/kernel/random/uuid` +> /usr/sbin/varnishd -C -f /etc/varnish/default.vcl >/dev/null \ +> && /usr/bin/varnishadm -T localhost:6082 -S /etc/varnish/secret "vcl.load vcl_$UUID /etc/varnish/default.vcl" \ +> && /usr/bin/varnishadm -T localhost:6082 -S /etc/varnish/secret "vcl.use vcl_$UUID" +> ~~~ + +> *Note* : 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