Comment accélérer Nginx avec Varnish Cache sur CentOS 7

Le cache Varnish (également appelé Varnish) est un accélérateur HTTP open-source et performant conçu pour accélérer les serveurs web. Dans nos derniers articles, nous avons expliqué comment configurer le cache Varnish pour Apache sur CentOS 7 et CentOS 8.

Dans cet article, nous vous montrerons comment installer et utiliser le cache Varnish comme frontal pour le serveur HTTP Nginx dans CentOS 7. Ce guide devrait également fonctionner sur RHEL 7.

Exigences

  1. A CentOS 7 with Apache installed
  2. A CentOS 7 with a static IP address

Étape 1 : Installer le serveur web Nginx sur CentOS 7

1. Commencez par installer le serveur HTTP Nginx à partir des dépôts logiciels par défaut de CentOS en utilisant le gestionnaire de paquets YUM comme suit.

# yum install nginx
Install Nginx on CentOS 7

2. Lorsque l’installation est terminée, démarrez le service Nginx pour le moment et activez-le pour qu’il démarre automatiquement au démarrage du système.

# systemctl start nginx
# systemctl enable nginx
# systemctl status nginx
Start and Enable Nginx at Boot

3. Modifiez maintenant les règles de pare-feu du système pour permettre les paquets entrants sur le port 80 en utilisant les commandes ci-dessous.

# firewall-cmd --zone=public --permanent --add-port=80/tcp
# firewall-cmd --reload
# firewall-cmd --zone=public --permanent --add-port=8080/tcp
# firewall-cmd --reload
Open Nginx Port on Firewall

Étape 2 : Installer le cache Varnish sur CentOS 7

4. Il existe maintenant des paquets RPM précompilés pour la dernière version de Varnish Cache 6 (c’est-à-dire 6.5 au moment de l’écriture), donc vous devez ajouter le dépôt officiel de Varnish Cache.

Avant cela, vous devez activer le dépôt EPEL pour installer plusieurs packages de dépendance comme indiqué.

# yum install -y epel-release

5. Ensuite, installez pygpgme, un package pour la manipulation des signatures GPG et yum-utils, une collection d’utilitaires utiles qui étendent les fonctionnalités natives de yum de différentes manières.

# yum install pygpgme yum-utils

6. Créez maintenant un fichier nommé /etc/yum.repos.d/varnishcache_varnish5.repo qui contient la configuration du dépôt ci-dessous.

# vi /etc/yum.repos.d/varnishcache_varnish65.repo

Important: Assurez-vous de remplacer el et 7 dans la configuration ci-dessous par votre distribution Linux et votre version :

[varnishcache_varnish65]
name=varnishcache_varnish65
baseurl=https://packagecloud.io/varnishcache/varnish65/el/7/$basearch
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/varnishcache/varnish65/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300

[varnishcache_varnish65-source]
name=varnishcache_varnish65-source
baseurl=https://packagecloud.io/varnishcache/varnish65/el/7/SRPMS
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/varnishcache/varnish65/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300

7. Exécutez maintenant la commande ci-dessous pour mettre à jour votre cache yum local et installer le paquet varnish cache (n’oubliez pas d’accepter la clé GPG en tapant y ou yes lors de l’installation du paquet) :

# yum -q makecache -y --disablerepo='*' --enablerepo='varnishcache_varnish65'
# yum install varnish 
Install Varnish Cache in CentOS 7

8. Après avoir installé Varnish Cache, l’exécutable principal sera installé sous /usr/sbin/varnishd et les fichiers de configuration varnish sont situés dans /etc/varnish/ :

  • /etc/varnish/default.vcl – il s’agit du fichier de configuration principal de varnish, il est écrit en utilisant le langage de configuration vanish (VCL).

9. Maintenant, démarrez le service de vernis, activez-le pour qu’il démarre automatiquement lors du démarrage du système, et vérifiez son statut pour vous assurer qu’il fonctionne comme suit.

# systemctl start varnish
# systemctl enable varnish
# systemctl status varnish
Start Varnish Cache

10. Vous pouvez confirmer que l’installation de Varnish a réussi en vérifiant l’emplacement de l’exécutable Varnish et la version installée sur votre système.

$ which varnishd
$ varnishd -V
Sortie d’exemple
varnishd (varnish-6.5.1 revision 1dae23376bb5ea7a6b8e9e4b9ed95cdc9469fb64)
Copyright (c) 2006 Verdens Gang AS
Copyright (c) 2006-2020 Varnish Software

Étape 3 : Configurer Nginx pour travailler avec le cache Varnish

11. Dans cette étape, vous devez configurer Nginx pour travailler avec le cache Varnish. Par défaut, Nginx écoute sur le port 80, vous devriez changer le port Nginx par défaut en 8080 pour qu’il fonctionne derrière le cache Varnish.

Ouvrez le fichier de configuration de Nginx /etc/nginx/nginx.conf et trouvez la ligne listen 80 et changez-la en listen 8080 comme indiqué dans le bloc serveur ci-dessous.

# vi /etc/nginx/nginx.conf
Configure Nginx Listening Port

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

12. Ensuite, ouvrez le fichier de configuration du service Varnish et trouvez le paramètre ExecStart qui spécifie le port sur lequel Varnish écoute, et changez sa valeur de 6081 à 80.

# systemctl edit --full  varnish

La ligne devrait ressembler à ce qui suit.

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

13. Ensuite, configurez Nginx en tant que serveur backend pour le proxy Varnish, dans le fichier de configuration /etc/varnish/default.vcl.

# vi /etc/varnish/default.vcl 

Trouvez la section backend et définissez l’adresse IP hôte et le port. Ci-dessous se trouve la configuration par défaut du backend, configurez-la pour pointer vers votre serveur de contenu réel.

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

14. Après avoir effectué toutes les configurations nécessaires, redémarrez Nginx HTTPD et le cache Varnish pour appliquer les changements ci-dessus.

# systemctl daemon-reload
# systemctl restart nginx
# systemctl restart varnish

Étape 4 : Testez le cache Varnish sur Nginx

15. Enfin, testez si le cache Varnish est activé et fonctionne avec le service Nginx en utilisant la commande cURL ci-dessous pour afficher l’en-tête HTTP.

# curl -I http://localhost
Exemple de sortie
HTTP/1.1 200 OK
Server: nginx/1.16.1
Date: Wed, 06 Jan 2021 09:24:18 GMT
Content-Type: text/html
Content-Length: 4833
Last-Modified: Fri, 16 May 2014 15:12:48 GMT
ETag: "53762af0-12e1"
X-Varnish: 2
Age: 0
Via: 1.1 varnish (Varnish/6.5)
Accept-Ranges: bytes
Connection: keep-alive

Vous pouvez trouver des informations supplémentaires dans le référentiel Github de Varnish Cache : https://github.com/varnishcache/varnish-cache

Dans ce tutoriel, nous avons expliqué comment configurer le cache Varnish pour le serveur HTTP Nginx sur CentOS 7. Utilisez le formulaire de commentaire ci-dessous pour nous envoyer des questions ou des idées supplémentaires.

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