Le cache Varnish est un accélérateur d’application web moderne, performant et open source. C’est un proxy HTTP inverse rapide qui met en cache le contenu pour accélérer les performances de votre serveur web, en stockant le contenu web dans la mémoire du serveur – dans un cache. Il est configuré pour s’exécuter devant un serveur d’origine tel que Apache (HTTPD).
Lorsqu’un client demande du contenu, Varnish accepte la demande HTTP, envoie la demande au serveur d’origine, met en cache les objets renvoyés et répond à la demande du client. La prochaine fois que le client demandera le même contenu, Varnish le servira à partir du cache. De cette façon, il réduit le temps de réponse et la consommation de bande passante réseau pour les futures demandes équivalentes.
Varnish fonctionne également comme un routeur de demande HTTP, un pare-feu d’application web, un équilibreur de charge, et plus encore. Il est configuré à l’aide du langage de configuration flexible de Varnish (VCL) qui est extensible à l’aide de Modules Varnish (également connus sous le nom de VMODs), prend en charge les Inclusions Côté Bord (ESI), la compression et la décompression Gzip, et bien plus encore.
Dans cet article, vous apprendrez comment installer le serveur web Apache HTTPD et le cache Varnish 6 sur un nouveau serveur CentOS/RHEL 8, y compris la configuration de Varnish pour s’exécuter devant le serveur HTTPD.
Prérequis :
- A server with CentOS 8 Installation
- A server with RHEL 8 installation with enabled Red Hat subscription on your system.
Étape 1 : Installation du serveur web Apache sur CentOS/RHEL 8
1. Commencez par mettre à jour tous les paquets logiciels installés sur le système comme suit en utilisant la commande DNF.
# dnf update
2. Ensuite, exécutez la commande suivante pour installer le serveur web Apache HTTP depuis le référentiel AppStream.
# dnf install httpd
3. Dès que l’installation est terminée, démarrez le service httpd, activez-le pour qu’il démarre automatiquement lors du démarrage du système et vérifiez son statut pour confirmer qu’il est en cours d’exécution, en utilisant la commande systemctl.
# systemctl start httpd # systemctl enable httpd # systemctl status httpd

4. Par défaut, CentOS/RHEL 8 inclut un pare-feu entièrement verrouillé (exécutez firewall-cmd –state pour confirmer). Vous devez ouvrir l’accès au service HTTP dans le pare-feu pour permettre aux utilisateurs d’accéder aux sites web ou aux applications fonctionnant sur HTTP, et également recharger les paramètres de firewalld pour appliquer les nouvelles modifications.
# firewall-cmd --zone=public --permanent --add-service=http # firewall-cmd --reload
Étape 2 : Installation de la mémoire cache Varnish 6.4 sur CentOS/RHEL 8
5. Maintenant que le serveur web Apache est en cours d’exécution, vous pouvez procéder à l’installation de Varnish Cache sur le système en utilisant la commande suivante.
# dnf module install varnish

6. Après une installation réussie, vous pouvez vérifier la version de Varnish installée sur votre système.
# varnishd -V

Ensuite, l’exécutable principal est installé sous /usr/sbin/varnishd. De plus, les fichiers de configuration de Varnish sont stockés dans le répertoire /etc/varnish, où :
- /etc/varnish/default.vcl – est le fichier de configuration principal de Varnish écrit en utilisant VCL.
- /etc/varnish/secret – est le fichier secret de Varnish.
8. Maintenant, démarrez le service Varnish, pour le moment, activez-le pour démarrer automatiquement lors du démarrage du système en cas de redémarrage du serveur et vérifiez son état pour vous assurer qu’il fonctionne comme suit.
# systemctl start varnish # systemctl enable varnish # systemctl status varnish

Étape 3 : Configuration d’Apache pour fonctionner avec le cache Varnish
9. Maintenant, il est temps de configurer le cache Varnish pour s’exécuter devant le service Apache. Par défaut, le serveur Apache est configuré pour écouter sur le port 80, cela est défini dans le fichier de configuration principal /etc/httpd/conf/httpd.conf.
Ouvrez-le pour l’éditer à l’aide de votre éditeur de texte préféré.
# vi /etc/httpd/conf/httpd.conf
Recherchez le paramètre Listen. Pour exécuter Varnish devant le serveur Apache, vous devez changer le port par défaut 80 en 8080 (ou tout autre port de votre choix) comme indiqué dans la capture d’écran suivante.
Ce port sera ajouté en tant que port du serveur backend dans le fichier de configuration de Varnish plus tard.

De plus, la configuration de l’hôte virtuel pour chaque site Web/application qui sera servi via Varnish doit être configurée pour écouter sur le port ci-dessus. Voici la configuration de notre site de test (/etc/httpd/conf.d/tecmint.lan.conf).
<VirtualHost *:8080> DocumentRoot "/var/www/html/tecmint.lan/" ServerName www.tecmint.lan # Other directives here </VirtualHost>

Important : Pour empêcher l’utilisation de la page de test du serveur HTTP Apache par défaut, commentez toutes les lignes du fichier /etc/httpd/conf.d/welcome.conf ou supprimez simplement le fichier.
# rm /etc/httpd/conf.d/welcome.conf
10. Ensuite, testez la syntaxe de la configuration httpd pour détecter d’éventuelles erreurs. Si tout est correct, redémarrez le service httpd pour appliquer les nouveaux changements.
# httpd -t # systemctl restart httpd

Configuration de Varnish pour Systemd
11. Pour déployer Varnish devant HTTPD, vous devez simplement le configurer pour écouter les requêtes client sur le port HTTP par défaut 80 comme expliqué ci-dessous.
Notez que dans Varnish Cache 6.0 et versions supérieures, vous devez définir le port sur lequel le serveur varnish écoute dans le fichier de service Varnish pour systemd. Tout d’abord, ouvrez-le pour l’édition.
# systemctl edit --full varnish
Recherchez la ligne ExecStart, puis modifiez la valeur du commutateur -a (qui spécifie l’adresse et le port d’écoute de varnish) de :6081 à :80 comme indiqué sur la capture d’écran suivante.
Il est important de noter que 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

Enregistrez les modifications dans le fichier et quittez-le.
Configurer les serveurs backend Varnish en utilisant VCL
12. Maintenant, vous devez configurer le serveur d’origine, connu dans la terminologie de Varnish comme un backend. C’est le serveur auquel Varnish parle pour récupérer le contenu – httpd dans ce cas. Il est configuré dans le fichier de configuration principal /etc/varnish/default.vcl.
# vi /etc/varnish/default.vcl
Il existe une section de configuration backend par défaut appelée default. Vous pouvez changer « default » en server1 (ou tout autre nom de votre choix pour respecter vos normes environnementales). Par défaut, le paramètre host pointe vers localhost, en supposant que le serveur backend fonctionne sur localhost.
Ensuite, définissez le port sur 8080 (le port que vous avez défini dans le fichier de configuration de l’hôte virtuel Apache) comme indiqué dans la capture d’écran.
backend server1 { .host = "127.0.0.1"; .port = "8080"; }

Si votre serveur backend fonctionne sur un hôte différent, par exemple, un autre serveur avec l’adresse 10.42.1.10, alors le paramètre host doit pointer vers cette adresse IP.
backend server1 { .host = "10.42.1.10"; .port = "8080"; }
Enregistrez le fichier et fermez-le.
13. Après avoir apporté toutes les modifications nécessaires concernant Varnish, rechargez la configuration du gestionnaire systemd pour refléter les nouvelles modifications dans le fichier de service Varnish et redémarrez également le service Varnish pour appliquer les modifications globales.
# systemctl daemon-reload # systemctl restart varnish
14. À ce stade, Varnish et Apache devraient maintenant écouter respectivement sur les ports 80 et 8080. Vous pouvez le confirmer en utilisant la commande de statistiques de socket.
# ss -tpln

Étape 4 : Tester le Cache Varnish et la Configuration Apache
14. Pour tester la configuration Cache Varnish-HTTPD, ouvrez un navigateur web et naviguez en utilisant l’adresse IP du serveur ou le FQDN comme indiqué dans la capture d’écran suivante.
http://10.42.0.144 OR http://www.tecmin.lan
Ensuite, vérifiez si les pages web sont servies via Cache Varnish comme suit. Vérifiez les en-têtes HTTP en cliquant avec le bouton droit de la souris sur la page web affichée, sélectionnez Inspecter pour ouvrir les outils de développement, puis cliquez sur l’onglet Réseau et rechargez la page. Ensuite, sélectionnez une requête pour afficher les en-têtes HTTP et confirmer cela comme indiqué dans la capture d’écran suivante.

Alternativement, vous pouvez exécuter la commande curl suivante pour le vérifier.
# curl -I http:///10.42.0.144 OR #curl -I http:///www.tecmint.lan

Programmes Utilitaires Utiles pour le Cache Varnish
15. Terminons ce guide en examinant certains des programmes utiles fournis avec la distribution de Cache Varnish. Ils incluent des utilitaires pour l’administration du cache Varnish, l’affichage de logs détaillés et la visualisation des statistiques de performance de Varnish comme décrit ci-dessous.
varnishadm
Le premier est varnishadm qui est utilisé pour administrer une instance en cours d’exécution de Varnish. Il établit une connexion à l’interface en ligne de commande de varnishd. Il peut affecter une instance en cours d’exécution de Varnish en démarrant et arrêtant varnishd, en modifiant des paramètres de configuration, en rechargeant le VCL, en répertoriant les backends, et plus encore.
# varnishadm > backend.list

Pour plus d’informations, lisez man varnishadm.
varnishlog
Le programme suivant est varnishlog qui est utilisé pour accéder aux données spécifiques aux requêtes (c’est-à-dire des informations sur des clients et des requêtes spécifiques). Il fournit de grandes quantités d’informations, il est donc généralement nécessaire de les filtrer.
# varnishlog

Pour plus d’informations, lisez le man varnishlog.
varnishstat
Nous avons également varnishstat (statistiques de Varnish) qui est utilisé pour accéder aux statistiques globales telles que le nombre total de requêtes, le nombre d’objets, et plus encore.
# varnishstat

Pour plus d’informations, lisez le man varnishstat.
varnishtop
Ensuite, nous avons varnishtop qui est un utilitaire qui lit le journal de Varnish et présente une liste continuellement mise à jour des entrées de journal les plus courantes.
# varnishtop

Pour plus d’informations, lisez le man varnishtop.
varnishhist
Une autre utilité utile est l’utilitaire varnishhist (historique de Varnish) qui lit les journaux de Varnish et présente un histogramme continuellement mis à jour montrant la distribution des dernières N requêtes par leur traitement.
# varnishhist

Pour plus d’informations, consultez le man varnishhist.
Voilà! Vous avez déployé avec succès le Cache Varnish pour accélérer le contenu de votre application web servi avec Apache HTTP Server sur CentOS/RHEL 8.
Si vous avez des questions sur ce sujet ou des réflexions à partager, utilisez le formulaire de rétroaction ci-dessous. Consultez la documentation Varnish Cache 6.0 pour plus d’informations.
Si vous souhaitez activer le HTTPS sur votre site, consultez notre prochain article, qui montrera comment activer SSL/TLS pour Varnish Cache en utilisant Hitch sur CentOS/RHEL 8.
Source:
https://www.tecmint.com/install-varnish-cache-for-apache-on-centos-rhel-8/