Varnish Cache est un puissant proxy HTTP inverse utilisé pour accélérer les applications Web qui est disponible en tant que logiciel Open Source. Varnish met en cache le contenu statique et dynamique. Il gère toutes les requêtes entrantes avant qu'elles n'atterrissent sur le backend de votre serveur Web. Il se situe entre un navigateur Web et un serveur Web Apache ou Nginx. Le cache Varnish stocke toutes les demandes de page entrantes en mémoire afin que les serveurs Web n'aient pas à créer la même page Web encore et encore.
Dans cet article, nous allons vous montrer comment installer le cache Varnish avec Apache et Nginx sur CentOS 8.
Prérequis
- Un serveur exécutant CentOS 8.
- Un mot de passe root est configuré sur votre serveur.
Mise en route
Avant de commencer, il est recommandé de mettre à jour vos packages système vers la dernière version. Vous pouvez les mettre à jour en exécutant la commande suivante :
dnf update -y
Une fois tous les packages mis à jour, vous pouvez passer à l'étape suivante.
Installer le vernis
Par défaut, le package Varnish est inclus dans le dépôt par défaut de CentOS 8. Vous pouvez l'installer en exécutant la commande suivante :
dnf install varnish -y
Après avoir installé Varnish, modifiez le fichier de configuration par défaut de Varnish et définissez l'adresse sauvegardée du serveur Web Nginx ou Apache.
nano /etc/varnish/default.vcl
Modifiez les lignes suivantes :
backend default { .host = "127.0.0.1"; .port = "8080"; }
Enregistrez et fermez le fichier lorsque vous avez terminé.
Configurer le vernis
Par défaut, Varnish écoute sur le port 6081. Vous devrez donc configurer Varnish pour écouter sur le port 80. Vous pouvez le configurer en éditant le fichier vernis.service :
nano /lib/systemd/system/varnish.service
Recherchez la ligne suivante :
ExecStart=/usr/sbin/varnishd -a :6081 -f /etc/varnish/default.vcl -s malloc,256m
Remplacé par la ligne suivante :
ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m
Enregistrez et fermez le fichier puis rechargez le démon systemd pour appliquer les modifications :
systemctl daemon-reload
Ensuite, démarrez le service Varnish et activez-le au redémarrage du système avec la commande suivante :
systemctl start varnish
systemctl enable varnish
Vous pouvez également vérifier l'état du vernis avec la commande suivante :
systemctl status varnish
Vous devriez obtenir le résultat suivant :
? varnish.service - Varnish Cache, a high-performance HTTP accelerator Loaded: loaded (/usr/lib/systemd/system/varnish.service; disabled; vendor preset: disabled) Active: active (running) since Fri 2021-03-12 04:17:32 EST; 4s ago Process: 6391 ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m (code=exited, status=0/SUCCESS) Main PID: 6392 (varnishd) Tasks: 217 Memory: 99.5M CGroup: /system.slice/varnish.service ??6392 /usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m ??6402 /usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m Mar 12 04:17:32 masternode systemd[1]: Starting Varnish Cache, a high-performance HTTP accelerator... Mar 12 04:17:32 masternode varnishd[6391]: Debug: Version: varnish-6.0.6 revision 29a1a8243dbef3d973aec28dc90403188c1dc8e7 Mar 12 04:17:32 masternode varnishd[6391]: Debug: Platform: Linux,4.18.0-193.6.3.el8_2.x86_64,x86_64,-junix,-smalloc,-sdefault,-hcritbit Mar 12 04:17:32 masternode varnishd[6392]: Version: varnish-6.0.6 revision 29a1a8243dbef3d973aec28dc90403188c1dc8e7 Mar 12 04:17:32 masternode varnishd[6392]: Platform: Linux,4.18.0-193.6.3.el8_2.x86_64,x86_64,-junix,-smalloc,-sdefault,-hcritbit Mar 12 04:17:32 masternode varnishd[6391]: Debug: Child (6402) Started Mar 12 04:17:32 masternode varnishd[6392]: Child (6402) Started Mar 12 04:17:32 masternode varnishd[6392]: Child (6402) said Child starts Mar 12 04:17:32 masternode systemd[1]: Started Varnish Cache, a high-performance HTTP accelerator.
À ce stade, Varnish est démarré et écoute sur le port 80. Vous pouvez le vérifier avec la commande suivante :
ss -antpl | grep varnishd
Vous devriez obtenir le résultat suivant :
LISTEN 0 10 127.0.0.1:34977 0.0.0.0:* users:(("varnishd",pid=1532,fd=11)) LISTEN 0 128 0.0.0.0:80 0.0.0.0:* users:(("cache-main",pid=1542,fd=6),("varnishd",pid=1532,fd=6)) LISTEN 0 128 [::]:80 [::]:* users:(("cache-main",pid=1542,fd=7),("varnishd",pid=1532,fd=7)) LISTEN 0 10 [::1]:34909 [::]:* users:(("varnishd",pid=1532,fd=10))
À ce stade, Varnish est installé et configuré. Vous pouvez maintenant passer à l'étape suivante.
Installer et configurer Nginx pour qu'il fonctionne avec Varnish
Tout d'abord, vous devrez installer le package Nginx sur votre serveur. Vous pouvez l'installer avec la commande suivante :
dnf install nginx -y
Une fois installé, vous devrez changer le port d'écoute Nginx de 80 à 8080. Vous pouvez le faire en modifiant le fichier de configuration par défaut de Nginx :
nano /etc/nginx/nginx.conf
Modifiez les lignes suivantes :
listen 8080 default_server; listen [::]:8080 default_server;
Enregistrez et fermez le fichier puis vérifiez le Nginx pour toute erreur de syntaxe en utilisant la commande suivante :
nginx -t
Vous devriez obtenir le résultat suivant :
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Ensuite, démarrez le service Nginx et activez-le au redémarrage du système :
systemctl start nginx
systemctl enable nginx
Vous pouvez également vérifier le port d'écoute Nginx avec la commande suivante :
ss -antpl | grep 8080
Vous devriez obtenir le résultat suivant :
LISTEN 0 128 0.0.0.0:8080 0.0.0.0:* users:(("nginx",pid=5569,fd=8),("nginx",pid=5568,fd=8)) LISTEN 0 128 [::]:8080 [::]:* users:(("nginx",pid=5569,fd=9),("nginx",pid=5568,fd=9))
À ce stade, le cache Varnish est installé et configuré pour transmettre toutes les requêtes arrivant sur le port 80 au serveur Web Nginx qui écoute sur le port 8080.
Vous pouvez vérifier si le cache Varnish fonctionne ou non avec la commande suivante :
curl -I http://localhost
Vous devriez obtenir le résultat suivant :
HTTP/1.1 200 OK Server: nginx/1.14.1 Date: Fri, 12 Mar 2021 09:18:32 GMT Content-Type: text/html Content-Length: 4057 Last-Modified: Mon, 07 Oct 2019 21:16:24 GMT ETag: "5d9bab28-fd9" X-Varnish: 2 Age: 0 Via: 1.1 varnish (Varnish/6.0) Accept-Ranges: bytes Connection: keep-alive
Installer et configurer Apache pour qu'il fonctionne avec Varnish
Tout d'abord, vous devrez installer le package de serveur Web Apache sur votre système. Vous pouvez l'installer avec la commande suivante :
dnf install httpd -y
Après avoir installé Apache, modifiez le fichier de configuration par défaut d'Apache et changez le port d'écoute de 80 à 8080.
nano /etc/httpd/conf/httpd.conf
Modifiez la ligne suivante :
Listen 8080
Enregistrez et fermez le fichier puis démarrez le service Apache et activez-le au redémarrage du système avec la commande suivante :
systemctl start httpd
systemctl enable httpd
Vous pouvez également vérifier le port d'écoute d'Apache avec la commande suivante :
ss -antpl | grep httpd
Vous devriez obtenir le résultat suivant :
LISTEN 0 128 *:8080 *:* users:(("httpd",pid=7556,fd=4),("httpd",pid=7555,fd=4),("httpd",pid=7554,fd=4),("httpd",pid=7552,fd=4))
À ce stade, le cache Varnish est installé et configuré pour transmettre toutes les requêtes arrivant sur le port 80 au serveur Web Apache qui écoute sur le port 8080.
Vous pouvez vérifier si le cache Varnish fonctionne ou non avec la commande suivante :
curl -I http://localhost
Vous devriez obtenir le résultat suivant :
Date: Fri, 12 Mar 2021 09:21:14 GMT Server: Apache/2.4.37 (centos) Content-Location: index.html.zh-CN Vary: negotiate,accept-language TCN: choice Last-Modified: Fri, 14 Jun 2019 03:37:43 GMT ETag: "fa6-58b405e7d6fc0;5bd5365602e05" Accept-Ranges: bytes Content-Length: 4006 Content-Type: text/html; charset=UTF-8 Content-Language: zh-cn X-Varnish: 2 Age: 0 Via: 1.1 varnish (Varnish/6.0) Connection: keep-alive
Travailler avec la ligne de commande Varnish
Varnish est livré avec plusieurs utilitaires utiles qui vous aident à surveiller et à contrôler Varnish.
vernisadm est un utilitaire de ligne de commande utilisé pour répertorier les backends configurés.
varnishadm
Vous devriez voir le résultat suivant :
200 ----------------------------- Varnish Cache CLI 1.0 ----------------------------- Linux,4.18.0-193.6.3.el8_2.x86_64,x86_64,-junix,-smalloc,-sdefault,-hcritbit varnish-6.0.6 revision 29a1a8243dbef3d973aec28dc90403188c1dc8e7 Type 'help' for command list. Type 'quit' to close CLI session.
Maintenant, exécutez la commande suivante pour répertorier tous les backends :
varnish> backend.list
Vous devriez voir le résultat suivant :
200 Backend name Admin Probe Last updated boot.default probe Healthy (no probe) Sat, 13 Mar 2021 03:00:02 GMT
journal de vernis
L'utilitaire vernissage est utilisé pour afficher les journaux de toutes les requêtes des utilisateurs.
varnishlog
Vous devriez obtenir le résultat suivant :
* << BeReq >> 6 - Begin bereq 5 fetch - VCL_use boot - Timestamp Start: 1615604631.507187 0.000000 0.000000 - BereqMethod GET - BereqURL / - BereqProtocol HTTP/1.1 - BereqHeader Host: 69.87.218.214 - BereqHeader Upgrade-Insecure-Requests: 1 - BereqHeader User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36 - BereqHeader Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 - BereqHeader Accept-Language: en-GB,en-US;q=0.9,en;q=0.8 - BereqHeader X-Forwarded-For: 106.213.193.241 - BereqHeader Accept-Encoding: gzip - BereqHeader X-Varnish: 6 - VCL_call BACKEND_FETCH - VCL_return fetch - BackendOpen 31 boot.default 127.0.0.1 8080 127.0.0.1 58860 - BackendStart 127.0.0.1 8080 - Timestamp Bereq: 1615604631.507458 0.000270 0.000270 - Timestamp Beresp: 1615604631.507844 0.000657 0.000386 - BerespProtocol HTTP/1.1 - BerespStatus 200 - BerespReason OK - BerespHeader Server: nginx/1.14.1 - BerespHeader Date: Sat, 13 Mar 2021 03:03:51 GMT - BerespHeader Content-Type: text/html - BerespHeader Content-Length: 4057 - BerespHeader Last-Modified: Mon, 07 Oct 2019 21:16:24 GMT
stat de vernis
La commande vernisstat vous fournit des informations sur les statistiques en mémoire, le stockage, les threads créés et les objets supprimés.
varnishstat
Vous devriez voir l'écran suivant :
vernis dessus
La commande vernistop lit les journaux de la mémoire partagée de vernis et présente une liste continuellement mise à jour des entrées de journal les plus courantes.
varnishtop
Vous devriez voir l'écran suivant :
vernisseur
Varnishhist analyse les journaux de vernis et imprime les n dernières requêtes en fonction de leur traitement.
varnishhist
Vous devriez voir l'écran suivant :
Conclusion
Dans le guide ci-dessus, vous avez appris comment installer et configurer le cache Varnish avec le serveur Web Apache et Nginx. Vous pouvez désormais implémenter le cache Varnish dans l'environnement de production et accélérer les performances de votre site Web. N'hésitez pas à me demander si vous avez des questions.