← évolutif
420-5A4-MT · Module 2 · Semaine 6 · Laboratoire

Installer un serveur Varnish
pour un serveur Apache

La procédure complète : installation, configuration du cache sur le port 80, Apache en arrière-plan, tests, journaux et purge. Deux machines : votre serveur Varnish et votre serveur Apache.

1 · Installation de Varnish

Exécuter sur le serveur Varnish :

$ sudo apt update $ apt search varnish $ sudo apt install varnish $ sudo apt install net-tools
Sortie de la commande apt install varnish
L'installation de Varnish avec apt.

Vérifier que le démon écoute :

$ sudo netstat -tulpn | grep varnishd
Sortie netstat montrant varnishd en écoute
varnishd est en écoute.
Contexte Client Cornucopia

Cornucopia · Application Pratique sur le Terrain

Ce laboratoire technique s'inscrit directement dans l'infrastructure de la ferme maraîchère de Flora et Hazel pour garantir la réactivité et la stabilité de leurs services bio en ligne.
Cas d'Usage Concret

Appliquer les configurations optimisées pour soutenir les pics de consultation des abonnés de la ferme.

2 · Configuration de Varnish

2.1 · Mettre le cache de Varnish sur le port 80

Créer le fichier de configuration dans /etc/systemd/system/varnish.service.d/ :

$ sudo systemctl edit varnish.service

Ajouter dans la partie non commentée (5e ou 6e ligne) :

[Service] ExecStart= ExecStart=/usr/sbin/varnishd -j unix,user=vcache -F -a 202.54.2.50:80 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret
Remplacer 202.54.2.50 par l'adresse IP de VOTRE serveur Varnish : c'est l'adresse et le port d'écoute du cache.

Recharger les changements :

$ sudo systemctl daemon-reload

2.2 · Donner Apache comme arrière-plan (backend) à Varnish

Éditer le fichier de configuration :

$ sudo nano /etc/varnish/default.vcl

Éditer la section backend default avec l'adresse IP de VOTRE serveur Apache et son port d'écoute (80) :

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

2.3 · Configurer Apache pour écouter sur son adresse IP

Sur le serveur Apache, éditer /etc/apache2/ports.conf :

$ sudo nano /etc/apache2/ports.conf

Retirer la directive Listen 80 et ajouter :

Listen 192.168.1.6:80

Éditer aussi /etc/apache2/sites-enabled/000-default.conf :

$ sudo nano /etc/apache2/sites-enabled/000-default.conf

L'indication de VirtualHost doit être modifiée (192.168.1.6 est l'adresse IP de VOTRE serveur Apache) :

<VirtualHost 192.168.1.6:80>

Redémarrer Apache, puis le cache côté Varnish :

$ sudo systemctl restart apache2.service $ sudo systemctl restart varnish.service

Sur le serveur Varnish, ouvrir le pare-feu :

$ sudo ufw allow 80 $ sudo ufw allow 22 $ sudo ufw enable

3 · Tester le serveur Varnish

À partir de votre navigateur, entrer l'adresse IP du serveur Varnish :

http://adresse-ip-de-votre-varnish/
Page par défaut d'Apache servie à travers Varnish
La page d'Apache, servie à travers le cache.

4 · Journaux et statistiques

Le classement des entrées

$ sudo varnishtop
Sortie de varnishtop
varnishtop : le palmarès des requêtes.

Les journaux

$ cd /var/log/varnish $ sudo tail -f varnish.log $ sudo tail -f varnishncsa.log

Les statistiques du cache

$ sudo varnishstat $ sudo varnishstat -1 $ sudo varnishstat -1 | grep -i cache
Sortie de varnishstat
varnishstat : hits, misses et compagnie.

5 · Purger le contenu du cache

Définir d'abord qui a le droit de purger, avec un ACL dans /etc/varnish/default.vcl :

# Qui a le droit de purger ? acl purge { "localhost"; "127.0.0.1"; "72.14.190.12"; "192.168.1.6"; } sub vcl_recv { # autoriser PURGE depuis localhost et les adresses de l'ACL if (req.method == "PURGE") { if (!client.ip ~ purge) { return(synth(405,"Not allowed.")); } return (purge); } }
72.14.190.12 est l'adresse IP de VOTRE serveur Varnish; 192.168.1.6 est celle d'un autre serveur depuis lequel vous voulez administrer Varnish.

Invalider un URL complet

$ varnishadm -T 127.0.0.1:6082 -S /etc/varnish/secret ban "req.http.host == www.example.com && req.url == /faq/bash-for-loop/"

Invalider tous les .html

$ varnishadm -T 127.0.0.1:6082 -S /etc/varnish/secret "ban req.http.host ~ www.example.com && req.url ~ .html"

Tout invalider

Redémarrer simplement le cache :

$ sudo systemctl restart varnish.service

6 · Informer WordPress de son URL d'accès

Dans les réglages de WordPress, mettre l'adresse IP de Varnish (ou le nom de domaine qui pointe sur Varnish). Si votre WordPress est dans /var/www/html/wordpress, l'URL doit être http://192.168.56.40/wordpress :

Réglages WordPress : adresse web du site pointant vers Varnish
Les réglages d'adresse dans WordPress.
Sans ce réglage, WordPress génère ses liens avec la mauvaise adresse et les visiteurs contournent le cache.