Comment installer et configurer Varnish Cache 6 avec Nginx sur CentOS 8

Varnish Cache est un accélérateur HTTP reverse-proxy gratuit et open-source pour les sites Web et les API. Il peut être installé comme un reverse proxy devant n’importe quel serveur Web fonctionnant en HTTP. Il se place entre le serveur Web et le navigateur et enregistre les pages Web, les cookies et autres données en mémoire. Ce cache sera utilisé pour servir toutes les futures demandes 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 tutoriel, nous allons installer le serveur Nginx comme serveur dorsal et le configurer pour qu’il écoute sur le port 8080, puis configurer le cache Varnish pour qu’il écoute sur le port HTTP 80 par défaut.

Conditions préalables

  • 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, tu dois installer le serveur Web Nginx dans ton système. Tu peux l’installer avec la commande suivante :

dnf install nginx -y

Une fois installé, démarre le service Nginx et active-le pour qu’il démarre 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. Tu devras donc configurer Nginx pour qu’il écoute sur le port 80. Tu peux le configurer en modifiant le fichier de configuration par défaut de Nginx :

nano /etc/nginx/nginx.conf

Trouve les lignes suivantes :

        listen       80 default_server;
        listen       [::]:80 default_server;

Et, remplace-les par les lignes suivantes :

        listen       8080 default_server;
        listen       [::]:8080 default_server;

Sauvegarde et ferme le fichier lorsque tu as terminé. Ensuite, redémarre le service Nginx pour appliquer les modifications :

systemctl restart nginx

À ce stade, le serveur Web Nginx est installé et écoute sur le port 8080. Tu peux le vérifier à l’aide de la commande suivante :

netstat -tpln | grep 8080

Tu devrais obtenir la sortie suivante :

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 Varnish

Par défaut, le paquet Varnish est disponible dans le dépôt par défaut de CentOS 8. Tu peux l’installer en exécutant simplement la commande suivante :

dnf module install varnish

Une fois installé, démarre le service Varnish avec la commande suivante :

systemctl start varnish

Tu peux aussi vérifier la version installée du cache Varnish avec la commande suivante :

varnishd -V

Tu devrais voir la sortie suivante :

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, tu devras configurer varnish pour qu’il fonctionne sur le port 80 afin de recevoir les demandes HTTP des clients. Tu peux le configurer en modifiant le fichier de configuration par défaut de Varnish :

systemctl edit --full varnish

Trouve la ligne suivante :

ExecStart=/usr/sbin/varnishd -a :6081 -f /etc/varnish/default.vcl -s malloc,256m

Et, remplace-la par la ligne suivante :

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

Sauvegarde et ferme le fichier lorsque tu as terminé.

Ensuite, tu devras définir le serveur dorsal pour Varnish. Tu peux le faire en modifiant le fichier de configuration principal de Varnish /etc/varnish/default.vcl :

nano /etc/varnish/default.vcl

Change les lignes suivantes :

backend myserver {
    .host = "127.0.0.1";
    .port = "8080";
}

Enregistre et ferme le fichier lorsque tu as terminé. Ensuite, recharge le démon systemd avec la commande suivante :

systemctl daemon-reload

Ensuite, redémarre le service Varnish et active son démarrage au redémarrage du système avec la commande suivante :

systemctl restart varnish
systemcl enable varnish

Tu peux aussi vérifier l’état de Varnish avec la commande suivante :

systemctl status varnish

Tu devrais obtenir la sortie suivante :

? 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.

Tu peux maintenant vérifier le port d’écoute de Nginx et de Varnish avec la commande suivante :

netstat -tpln | grep 80

Tu devrais voir la sortie suivante :

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. Tu devras donc configurer SELinux pour Varnish. Tu peux le configurer avec la commande suivante :

setsebool -P httpd_can_network_connect 1

Ensuite, tu devras autoriser le port 80 via firewalld. Tu peux le faire avec la commande suivante :

firewall-cmd --permanent --zone public --add-port 80/tcp
firewall-cmd --reload

Une fois que tu as terminé, tu peux passer à l’étape suivante.

Teste le cache de Varnish

À 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.

Tu peux le tester en utilisant la commande curl comme indiqué ci-dessous :

curl -I http://localhost

Tu devrais voir la sortie suivante :

																																																																																																																																																																																																																																																																																																																																																																		
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

Félicitations ! Tu as réussi à installer Varnish Cache avec Nginx sur CentOS 8. J’espère que tu pourras aussi configurer facilement le cache Varnish avec le serveur Web Apache. N’hésite pas à me demander si tu as des questions.

Vous aimerez aussi...