Comment installer Varnish Cache 6 pour Nginx sur CentOS/RHEL 8

Varnish Cache (communément appelé Varnish) est un accélérateur HTTP en reverse-proxy open source, puissant et rapide, doté d’une architecture moderne et d’un langage de configuration flexible. Être un reverse proxy signifie simplement qu’il s’agit d’un logiciel que vous pouvez déployer devant votre serveur web (qui est le serveur d’origine ou backend) tel que Nginx, pour recevoir les requêtes HTTP des clients et les transmettre au serveur d’origine pour traitement. Et il délivre la réponse du serveur d’origine aux clients.

Varnish agit comme un intermédiaire entre Nginx et les clients mais avec certains avantages en termes de performances. Son objectif principal est d’accélérer le chargement de vos applications, en agissant comme un moteur de mise en cache. Il reçoit les requêtes des clients et les transmet au backend une fois pour mettre en cache le contenu demandé (stocker des fichiers et des fragments de fichiers en mémoire). Ensuite, toutes les futures requêtes pour un contenu exactement similaire seront servies à partir du cache.

Cela permet à vos applications web de se charger plus rapidement et améliore indirectement les performances globales de votre serveur web car Varnish servira le contenu depuis la mémoire au lieu que Nginx traite les fichiers depuis le disque de stockage.

Outre la mise en cache, Varnish a également plusieurs autres cas d’utilisation, notamment un routeur de requêtes HTTP, un répartiteur de charge, un pare-feu d’application web, et plus encore.

Le vernis est configuré en utilisant le langage de configuration Varnish Configuration Language (VCL) hautement extensible qui vous permet d’écrire des politiques sur la façon dont les demandes entrantes doivent être gérées. Vous pouvez l’utiliser pour construire des solutions personnalisées, des règles et des modules.

Dans cet article, nous passerons en revue les étapes pour installer le serveur web Nginx et Varnish Cache 6 sur un serveur CentOS 8 ou RHEL 8 fraîchement installé. Les utilisateurs de RHEL 8 doivent s’assurer qu’ils activent l’abonnement Red Hat.

Pour mettre en place un ensemble complet LEMP au lieu d’installer uniquement le serveur web Nginx, consultez les guides suivants.

  1. Comment installer un serveur LEMP sur CentOS 8
  2. Comment installer un serveur LEMP sur RHEL 8

Étape 1 : Installer le serveur web Nginx sur CentOS/RHEL 8

1. Le CentOS/RHEL 8 est livré avec la dernière version du logiciel serveur web Nginx, nous allons donc l’installer à partir du dépôt par défaut en utilisant les commandes dnf suivantes.

# dnf update
# dnf install nginx

2. Une fois Nginx installé, vous devez le démarrer, l’activer et vérifier son statut en utilisant les commandes systemctl suivantes.

# systemctl start nginx
# systemctl enable nginx
# systemctl status nginx
Verify Nginx Service Status

3. Si vous êtes un peu curieux, vous pouvez également vérifier le socket TCP Nginx, qui fonctionne sur le port 80 par défaut, en utilisant la commande ss suivante.

# ss -tpln
Check Nginx TCP Port

4. Si vous exécutez le pare-feu sur le système, assurez-vous de mettre à jour les règles du pare-feu pour autoriser les requêtes vers un serveur web.

# firewall-cmd --zone=public --permanent --add-service=http
# firewall-cmd --reload

Étape 2 : Installation de Varnish Cache 6 sur CentOS/RHEL 8

5. Le CentOS/RHEL 8 fournit un module Varnish Cache DNF par défaut qui contient la version 6.0 LTS (Support à Long Terme).

Pour installer le module, exécutez la commande suivante.

# dnf module install varnish
Install Varnish Cache in CentOS 8

6. Une fois l’installation du module terminée, vous pouvez confirmer la version de Varnish installée sur votre système.

# varnishd -V
Check Varnish Version

7. Après avoir installé Varnish Cache, la commande exécutable principale installée sous /usr/sbin/varnishd et les fichiers de configuration de Varnish se trouvent dans /etc/varnish/.

Le fichier /etc/varnish/default.vcl est le fichier de configuration principal de Varnish écrit en utilisant VCL et /etc/varnish/secret est le fichier secret de Varnish.

8. Ensuite, démarrez le service Varnish, activez-le pour démarrer automatiquement lors du démarrage du système et confirmez qu’il est en cours d’exécution.

# systemctl start varnish
# systemctl enable varnish
# systemctl status varnish
Verify Varnish Cache on CentOS 8

Étape 3 : Configuration de Nginx pour fonctionner avec Varnish Cache

9. Dans cette section, nous montrerons comment configurer Varnish Cache pour fonctionner devant Nginx. Par défaut, Nginx écoute sur le port 80, normalement chaque bloc serveur (ou hôte virtuel) est configuré pour écouter sur ce port.

Par exemple, jetez un œil au bloc serveur Nginx par défaut configuré dans le fichier de configuration principal (/etc/nginx/nginx.conf).

# vi /etc/nginx/nginx.conf

Recherchez la section du bloc serveur comme indiqué dans la capture d’écran suivante.

Nginx Server Block Configuration

10. Pour exécuter Varnish devant Nginx, vous devez changer le port Nginx par défaut de 80 à 8080 (ou tout autre port de votre choix).

Cela doit être fait dans tous les futurs fichiers de configuration de bloc serveur (généralement créés sous /etc/nginx/conf.d/) pour les sites ou applications web que vous souhaitez servir via Varnish.

Par exemple, le bloc serveur pour notre site de test tecmint.lan est /etc/nginx/conf.d/tecmint.lan.conf et a la configuration suivante.

server {
        listen       8080;
        server_name  www.tecmint.lan;
        root         /var/www/html/tecmint.lan/;
        location / {
        }

        error_page 404 /404.html;
            location = /40x.html {
        }
        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
}
Nginx Server Block Configuration

Important: N’oubliez pas de désactiver le bloc serveur par défaut en commentant sa section de configuration dans le fichier /etc/nginx/nginx.conf comme indiqué dans la capture d’écran suivante. Cela vous permet de commencer à exécuter d’autres sites/applications sur votre serveur, sinon, Nginx dirigera toujours les requêtes vers le bloc serveur par défaut.

Disable Nginx Server Block

11. Une fois la configuration terminée, vérifiez le fichier de configuration pour toute erreur et redémarrez le service Nginx pour appliquer les changements récents.

# nginx -t
# systemctl restart nginx
Check Nginx Configuration Syntax

12. Ensuite, pour recevoir les requêtes HTTP des clients, nous devons configurer Varnish pour fonctionner sur le port 80. Contrairement aux versions antérieures de Varnish Cache où ce changement était effectué dans le fichier d’environnement Varnish (qui est maintenant obsolète), dans la version 6.0 et supérieure.

Nous devons apporter le changement requis dans le fichier de service Varnish. Exécutez la commande suivante pour ouvrir le fichier de service approprié à des fins de modification.

# systemctl edit --full  varnish

Trouvez la ligne suivante et changez la valeur de l’option -a, qui spécifie l’adresse et le port d’écoute. Définissez le port sur 80 comme indiqué dans la capture d’écran suivante.

Remarque : si vous ne spécifiez pas d’adresse, varnishd écoutera sur toutes les interfaces IPv4 et IPv6 disponibles sur le serveur.

ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m
Change Varnish Listen Port

Enregistrez les modifications dans le fichier et quittez.

13. Ensuite, vous devez définir le serveur backend que Varnish visitera pour récupérer du contenu. Cela se fait dans le fichier de configuration principal de Varnish.

# vi /etc/varnish/default.vcl 

Recherchez la section de configuration du backend par défaut et changez la chaîne « default » en server1 (ou tout autre nom de votre choix pour représenter votre serveur d’origine). Ensuite, définissez le port sur 8080 (ou le port d’écoute Nginx que vous avez défini dans votre bloc serveur).

backend server1 {
    .host = "127.0.0.1";
    .port = "8080";
}
Set Default Varnish Backend Servers

Pour ce guide, nous exécutons Varnish et Nginx sur le même serveur. Si votre serveur web Nginx s’exécute sur un hôte différent. Par exemple, un autre serveur avec l’adresse 10.42.0.247, définissez le paramètre .host comme indiqué.

backend server1 {
    .host = "10.42.0.247";
    .port = "8080";
}

Enregistrez le fichier et fermez-le.

14. Ensuite, vous devez recharger la configuration du gestionnaire systemd en raison des modifications récentes dans le fichier de service Varnish, puis redémarrer le service Varnish pour appliquer les modifications comme suit.

# systemctl daemon-reload
# systemctl restart varnish

15. Confirmez maintenant que Nginx et Varnish écoutent sur les sockets TCP configurés.

# ss -tpln
Confirm Nginx and Varnish Ports

Étape 4 : Test de la configuration du cache Nginx Varnish

16. Ensuite, vérifiez que les pages web sont servies via Varnish Cache comme suit. Ouvrez un navigateur web et accédez en utilisant l’IP du serveur ou le FDQN comme indiqué dans la capture d’écran suivante.

http://www.tecmin.lan
OR
http://10.42.0.144
Verify Nginx Pages Served Via Varnish Cache

17. Alternativement, utilisez la commande curl comme indiqué. Utilisez l’adresse IP de votre serveur ou le FQDN du site web ou utilisez 127.0.0.1 ou localhost si vous effectuez des tests en local.

# curl -I http:///www.tecmint.lan
Verify Nginx Varnish Cache Page Using Curl

Utilitaires d’administration utiles de Varnish Cache

18. Dans cette dernière section, nous décrirons brièvement certains des programmes utilitaires utiles fournis avec Varnish Cache , que vous pouvez utiliser pour contrôler varnishd , accéder aux journaux en mémoire et aux statistiques globales, et plus encore.

varnishadm

varnishadm un utilitaire pour contrôler une instance Varnish en cours d’exécution. Il établit une connexion CLI à varnishd. Par exemple, vous pouvez l’utiliser pour lister les backends configurés comme indiqué dans la capture d’écran suivante (lire man varnishadm pour plus d’informations).

# varnishadm
varnish> backend.list
List Configured Backends

varnishlog

L’utilitaire varnishlog fournit un accès aux données spécifiques à la requête. Il offre des informations sur les clients et les requêtes spécifiques (lire man varnishlog pour plus d’informations).

# varnishlog
Check Info About Clients and Requests

varnishstat

A varnishstat also known as varnish statistics, which gives you a glance at Varnish’s current performance by providing access to in-memory statistics such as cache hits and misses, information about the storage, threads created, deleted objects (read man varnishstat for more information).

# varnishstat 
Show Varnish Statistics

varnishtop

A varnishtop utility reads the shared memory logs and presents a continuously updated list of the most commonly occurring log entries (read man varnishtop for more information).

# varnishtop 
View Shared Memory logs

varnishhist

A varnishhist (varnish history) utility parses the varnish logs and outputs a continuously updated histogram showing the distribution of the last n requests by their processing (read man varnishhist for more information).

# varnishhist
Show Requests Histogram

C’est tout! Dans ce guide, nous avons montré comment installer Cache Varnish et le faire fonctionner devant le serveur HTTP Nginx pour accélérer la diffusion de contenu web dans CentOS/RHEL 8.

Toute réflexion ou question sur ce guide peut être partagée en utilisant le formulaire de rétroaction ci-dessous. Pour plus d’informations, consultez la documentation de Cache Varnish.

Le principal inconvénient de Cache Varnish est son manque de prise en charge native de HTTPS. Pour activer HTTPS sur votre site/application web, vous devez configurer un proxy de terminaison SSL/TLS pour fonctionner en conjonction avec Cache Varnish pour protéger votre site. Dans notre prochain article, nous montrerons comment activer HTTPS pour Cache Varnish en utilisant Hitch sur CentOS/RHEL 8.

Source:
https://www.tecmint.com/install-varnish-cache-for-nginx-on-centos-rhel-8/