Comment fonctionne Varnish Cache + NGINX Reverse Proxy

Publié: 2022-08-09

Dans cet article, nous discuterons du proxy inverse Varnish cache NGINX et de la manière dont vous pouvez le configurer.

Un serveur proxy mettant l'accent sur la mise en cache HTTP est Varnish. Il est conçu pour être un accélérateur HTTP et peut fonctionner comme un proxy inverse pour votre serveur Web Apache ou NGINX. Les sites Web avec beaucoup de trafic et une grande importance ont mis en œuvre Varnish.

Table des matières

Qu'est-ce que le cache vernis ?

Pour une entreprise basée sur le Web, le cache est souvent le logiciel le plus crucial. Varnish Cache est un puissant moteur HTTP open source/proxy HTTP inverse qui fait exactement ce que son nom implique : met en cache (ou stocke) une copie d'une page Web la première fois qu'un visiteur la consulte. Cela peut accélérer un site Web jusqu'à 1000%. Varnish fait une seule demande à votre serveur pour mettre en cache la page, après quoi il gère toutes les demandes ultérieures pour la même page. Cela se traduit par une livraison de contenu incroyablement rapide et moins de demande sur les ressources du serveur principal.

  • Les compétences clés de Varnish sont la vitesse et la performance.
  • Économies d'infrastructure de serveur
  • Évolutivité - Varnish permet à votre site de répondre à la demande quel que soit le volume de visiteurs ou de demandes.
  • Protection contre les pannes : Varnish continue de diffuser les informations mises en cache même si votre serveur tombe en panne.
  • Flexibilité : le langage de configuration Varnish (VCL) permet la création de solutions, de règles et de modules spécialisés.
  • Expérience utilisateur améliorée

Comment fonctionne Varnish Cache ?

Avant qu'elles n'atteignent le backend de votre serveur Web, Varnish traite toutes les requêtes entrantes. Son cache gère tout le trafic Web et, par défaut, s'actualise toutes les deux minutes.

Cache de vernis Proxy inverse Nginx

Varnish acheminera la requête vers le backend du serveur Web et mettra en cache le résultat, comme nous venons de le voir dans le paragraphe sur le proxy inverse générique si la requête n'est pas mise en cache.

Une fois les requêtes mises en cache, elles sont mises en mémoire et peuvent ensuite être rapidement récupérées et envoyées aux clients. Varnish utilise le langage VCL pour exprimer les paramètres, les politiques de mise en cache et d'autres règles (Varnish Configuration Language).

Vous pouvez répondre différemment à chaque demande en utilisant ce langage et ses variantes. Par exemple, vous pouvez diriger certaines requêtes vers un backend spécifique ou demander à Varnish de prendre une action différente en fonction des caractéristiques de la requête entrante ou de ses résultats.

Le matériel mis en cache peut toujours être fourni même lorsque le serveur Web n'est pas disponible en raison d'une fonctionnalité intégrée appelée interrogation backend, qui est une autre fonction étonnante de Varnish. Varnish continuera à fournir du contenu mis en cache pendant une période appelée temps de grâce s'il détecte un temps d'arrêt. L'interrogation principale interroge le serveur à une fréquence que vous pouvez définir de manière flexible.

Qu'est-ce que Nginx ?

NGINX est un logiciel open source qui peut être utilisé pour le streaming vidéo, la mise en cache, les proxys inverses, le service Web et d'autres fonctions. Il a commencé à l'origine comme un serveur Web conçu pour une vitesse et une fiabilité maximales. NGINX peut fonctionner comme un serveur HTTP, un serveur proxy de messagerie (IMAP, POP3 et SMTP), un proxy inverse et un équilibreur de charge pour les serveurs HTTP, TCP et UDP en plus de servir de serveur HTTP.

Qu'est-ce que le proxy inverse ?

La fonction principale d'un proxy inverse est de protéger les serveurs Web du trafic entrant. Chaque demande de connexion est reçue par un proxy inverse, qui la transmet via de nombreux serveurs avant de se connecter à celui qui a traité la demande.

Chaque opération de proxy inverse comporte trois phases principales :

  1. Collecte des requêtes de connexion : A la périphérie du réseau, le proxy inverse accepte les requêtes entrantes.
  2. Prise de contact TCP en trois temps : Une connexion au proxy inverse est créée après une prise de contact TCP en trois temps et la première connexion est fermée.
  3. Connexion au serveur d'origine : à l'aide d'une adresse IP fictive, le proxy inverse connecte le serveur d'origine à la requête du client.

Les utilisateurs ne peuvent jamais se connecter directement à un serveur d'origine, car toutes les connexions de navigateur Web aux applications Web se font toujours via un proxy inverse.

Comment configurer le proxy inverse Varnish cache Nginx ?

Installez Nginx sur votre serveur

Tout d'abord, nous devons installer Nginx à partir du référentiel Ubuntu à l'aide de la commande apt

 sudo apt update apt install nginx -y

Une fois l'installation terminée, nous devons démarrer et activer Nginx pour qu'il se lance à chaque fois au démarrage du système à l'aide de la commande systemctl

 systemctl start nginx systemctl enable nginx

Configurer Nginx sur le port 88

Nous allons configurer Nginx pour utiliser le port HTTP non conventionnel 8080 pour le fonctionnement. Pour ce faire, nous devons modifier les fichiers de l'hôte virtuel situés dans le répertoire "sites-available".

 nano /etc/nginx/sites-available/default

Remplacez la valeur de la ligne 'listen' par 8080. Enregistrez et quittez.

Vérifiez les erreurs en testant les paramètres Nginx dès maintenant. Redémarrez le service après cela.

 nginx -t systemctl restart nginx

Vérifiez à nouveau Nginx à l'aide de netstat et confirmez qu'il fonctionne sur le port HTTP non conventionnel 8080.

 netstat -plntu

Il a été installé et le port 8080 est actuellement utilisé par le serveur Web Nginx.

Installer Varnish sur Ubuntu

Nous devons installer le vernis en utilisant la commande apt

 sudo apt install varnish -y

À l'aide des commandes systemctl répertoriées ci-dessous, démarrez vernis et configurez-le pour qu'il démarre automatiquement au démarrage du système.

 systemctl start varnish systemctl enable varnish

Par défaut, le vernis utilisera le port 6082 pour l'interface Web d'administration et le port 6081 pour l'accès public. Assurez-vous que certains ports sont répertoriés en utilisant la commande netstat pour vérifier.

 netstat -plntu

L'accélérateur HTTP Varnish a été installé

Configurer Varnish en tant que proxy inverse pour Nginx

En tant que proxy inverse pour le serveur Web Nginx, Varnish sera utilisé. Le serveur Web Nginx fonctionnera sur le port HTTP 8080, tandis que Varnish fonctionnera sur le port HTTP 80.

Dans cette phase, nous allons configurer Varnish pour Nginx, identifier le serveur principal et modifier Varnish afin qu'il utilise le port HTTP 80 comme port par défaut.

Editez le fichier "default.vcl" en allant tout de suite dans le répertoire de configuration de vernis. et assurez-vous que l'hôte est 127.0.0.1 et que le port est 8080

 nano /etc/varnish/default.vcl

La configuration du backend est terminée.

L'étape suivante consiste à configurer Varnish pour utiliser le port HTTP 80. Modifiez le fichier de configuration de vernis en accédant au répertoire 'varnish' dans le répertoire '/etc/default'.

 nano /etc/default/varnish

Assurez-vous que votre port par défaut est 6081 et que le port HTTP est 80

Le fichier de service de vernis dans le répertoire '/lib/systemd/system' doit maintenant être modifié. Modifiez le fichier vernis.service en accédant au répertoire système systemd.

 cd /lib/systemd/system nano varnish.service

Remplacez le port HTTP 80 par le port vernis 6081 sur la ligne 'ExecStart'.

Rechargez maintenant la configuration systemd et redémarrez le vernis

 systemctl daemon-reload systemctl restart varnish

Vérifier le vernis à l'aide de la commande netstat

 netstat -plntu

la configuration de vernis en tant que proxy inverse pour Nginx est terminée

Configurer le pare-feu UFW

Le pare-feu par défaut lisible par l'homme sur le système d'exploitation Ubuntu s'appelle "UFW". Utilisez la commande apt ci-dessous pour les installer si vous ne disposez pas déjà du package.

 sudo apt install ufw

Nous allons activer le pare-feu et ouvrir de nouveaux ports SSH, HTTP et HTTPS.

les commandes ufw listées ci-dessous.

 ufw allow ssh ufw allow http ufw allow https

Maintenant, activez le pare-feu et faites en sorte qu'il démarre toujours au démarrage.

 ufw enable

Maintenant que le pare-feu UFW est actif, les ports HTTP et HTTPS sont accessibles depuis le réseau extérieur.