Varnish Cache est un accélérateur HTTP de proxy inverse gratuit et open-source pour les sites Web et les API. Il peut être installé en tant que proxy inverse devant n'importe quel serveur Web fonctionnant sur HTTP. Il se situe entre le serveur Web et le navigateur et enregistre les pages Web, les cookies et d'autres données en mémoire. Ce cache sera utilisé pour répondre à toutes les demandes futures de contenu exactement similaire. Cela augmentera la charge de l'application Web et améliorera les performances du serveur Web de plus de 300 fois.
Dans ce didacticiel, nous allons configurer le serveur Nginx en tant que serveur principal et le configurer pour écouter sur le port 8080, puis configurer le cache Varnish pour qu'il écoute sur le port HTTP 80 par défaut.
Prérequis
- Un serveur exécutant CentOS 8.
- Un mot de passe root est configuré sur le serveur.
Installer et configurer le serveur Web Nginx
Tout d'abord, vous devrez installer le serveur Web Nginx sur votre système. Vous pouvez l'installer avec la commande suivante :
dnf install nginx -y
Une fois installé, démarrez le service Nginx et activez-le au redémarrage du système avec la commande suivante :
systemctl start nginx
systemctl enable nginx
Par défaut, le Nginx écoute sur le port 80. Vous devrez donc configurer Nginx pour écouter sur le port 80. Vous pouvez le configurer en éditant le fichier de configuration par défaut de Nginx :
nano /etc/nginx/nginx.conf
Recherchez les lignes suivantes :
listen 80 default_server; listen [::]:80 default_server;
Et remplacez-les par les lignes suivantes :
listen 8080 default_server; listen [::]:8080 default_server;
Enregistrez et fermez le fichier lorsque vous avez terminé. Ensuite, redémarrez le service Nginx pour appliquer les modifications :
systemctl restart nginx
À ce stade, le serveur Web Nginx est installé et écoute sur le port 8080. Vous pouvez le vérifier à l'aide de la commande suivante :
netstat -tpln | grep 8080
Vous devriez obtenir le résultat suivant :
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 30367/nginx: master tcp6 0 0 :::8080 :::* LISTEN 30367/nginx: master
Installer le cache de vernis
Par défaut, le package Varnish est disponible dans le référentiel par défaut de CentOS 8. Vous pouvez l'installer en exécutant simplement la commande suivante :
dnf module install varnish
Une fois installé, démarrez le service Varnish avec la commande suivante :
systemctl start varnish
Vous pouvez également vérifier la version installée du cache Varnish avec la commande suivante :
varnishd -V
Vous devriez voir le résultat suivant :
varnishd (varnish-6.0.2 revision 0458b54db26cfbea79af45ca5c4767c7c2925a91) Copyright (c) 2006 Verdens Gang AS Copyright (c) 2006-2018 Varnish Software AS
Configurer Varnish pour Nginx
Ensuite, vous devrez configurer le vernis pour qu'il s'exécute sur le port 80 afin de recevoir les requêtes HTTP des clients. Vous pouvez le configurer en éditant le fichier de configuration par défaut de Varnish :
systemctl edit --full varnish
Recherchez la ligne suivante :
ExecStart=/usr/sbin/varnishd -a :6081 -f /etc/varnish/default.vcl -s malloc,256m
Et remplacez-le par la ligne suivante :
ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m
Enregistrez et fermez le fichier lorsque vous avez terminé.
Ensuite, vous devrez définir le serveur principal pour Varnish. Vous pouvez le faire en éditant le fichier de configuration principal de Varnish /etc/varnish/default.vcl :
nano /etc/varnish/default.vcl
Modifiez les lignes suivantes :
backend myserver { .host = "127.0.0.1"; .port = "8080"; }
Enregistrez et fermez le fichier lorsque vous avez terminé. Ensuite, rechargez le démon systemd avec la commande suivante :
systemctl daemon-reload
Ensuite, redémarrez le service Varnish et activez-le pour qu'il démarre au redémarrage du système avec la commande suivante :
systemctl restart varnish
systemcl 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 (/etc/systemd/system/varnish.service; disabled; vendor preset: disabled) Active: active (running) since Sat 2020-08-29 09:36:58 EDT; 12s ago Process: 30421 ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m (code=exited, status=0/SUCCESS) Main PID: 30424 (varnishd) Tasks: 217 Memory: 91.8M CGroup: /system.slice/varnish.service ??30424 /usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m ??30434 /usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m Aug 29 09:36:57 centos8 systemd[1]: Starting Varnish Cache, a high-performance HTTP accelerator... Aug 29 09:36:58 centos8 varnishd[30421]: Debug: Version: varnish-6.0.2 revision 0458b54db26cfbea79af45ca5c4767c7c2925a91 Aug 29 09:36:58 centos8 varnishd[30421]: Debug: Platform: Linux,4.18.0-193.6.3.el8_2.x86_64,x86_64,-junix,-smalloc,-sdefault,-hcritbit Aug 29 09:36:58 centos8 varnishd[30424]: Version: varnish-6.0.2 revision 0458b54db26cfbea79af45ca5c4767c7c2925a91 Aug 29 09:36:58 centos8 varnishd[30424]: Platform: Linux,4.18.0-193.6.3.el8_2.x86_64,x86_64,-junix,-smalloc,-sdefault,-hcritbit Aug 29 09:36:58 centos8 varnishd[30421]: Debug: Child (30434) Started Aug 29 09:36:58 centos8 varnishd[30424]: Child (30434) Started Aug 29 09:36:58 centos8 varnishd[30424]: Child (30434) said Child starts Aug 29 09:36:58 centos8 systemd[1]: Started Varnish Cache, a high-performance HTTP accelerator.
Vous pouvez maintenant vérifier le port d'écoute de Nginx et Varnish avec la commande suivante :
netstat -tpln | grep 80
Vous devriez voir le résultat suivant :
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 30424/varnishd tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 30367/nginx: master tcp6 0 0 :::80 :::* LISTEN 30424/varnishd tcp6 0 0 :::8080 :::* LISTEN 30367/nginx: master
Configurer SELinux et le pare-feu
Par défaut, SELinux est activé dans CentOS 8. Vous devrez donc configurer SELinux pour Varnish. Vous pouvez le configurer avec la commande suivante :
setsebool -P httpd_can_network_connect 1
Ensuite, vous devrez autoriser le port 80 via firewalld. Vous pouvez le faire avec la commande suivante :
firewall-cmd --permanent --zone public --add-port 80/tcp
firewall-cmd --reload
Une fois que vous avez terminé, vous pouvez passer à l'étape suivante.
Tester le cache de vernis
À ce stade, le cache Varnish est installé et configuré avec le serveur Web Nginx. Maintenant, il est temps de tester si le cache Varnish fonctionne ou non.
Vous pouvez le tester en utilisant la commande curl comme indiqué ci-dessous :
curl -I http://localhost
Vous devriez voir le résultat suivant :
HTTP/1.1 200 OK Server: nginx/1.14.1 Date: Sat, 29 Aug 2020 13:53:44 GMT Content-Type: text/html; charset=UTF-8 X-Powered-By: PHP/7.2.24 X-Varnish: 32800 Age: 0 Via: 1.1 varnish (Varnish/6.0) Accept-Ranges: bytes Connection: keep-alive
Conclusion
Toutes nos félicitations! vous avez installé avec succès Varnish Cache avec Nginx sur CentOS 8. J'espère que vous pourrez également configurer facilement le cache Varnish avec le serveur Web Apache. N'hésitez pas à me demander si vous avez des questions.