Admin Système

Nginx : Configurer son cache

Break___macro___by_SaleMK

Nginx est un serveur HTTP pouvant être utilisé en reverse proxy « proxy inverse ». Créé en 2002, c’est un serveur mature et efficace pour un environnement LAMP associé au module PHP-FPM. Cet article va vous montrer comment configurer son cache, permettant de soulager votre serveur PHP et évitant la mise en place d’un serveur type Varnish.

Nous partons du principe que NGINX est fonctionnel, avec un site qui est connecté. Dans mon cas, Nginx ne sert que de proxy, permettant de router sur les VM les sites internet.

Configuration de base :

D’abord, vous devez créer un repertoire permettant de stocker le contenu du cache de NGINX. Dans le cadre de cet article, j’ai créé un dossier /cache à la racine, dont le propriétaire est l’utilisateur faisant tourner NGinx et possédant les droits en écriture.

Pour optimiser les temps de lecture et écriture dans ce dossier, je l’ai monté en TMPFS. C’est un montage en mémoire, type ramdisk permettant, dans mon cas (mon serveur à des disques très peu efficaces) d’optimiser les performances.

D’abord, nous allons décrire la zone de cache pour Nginx avec sa configuration :

Avant les paramètre de server :

Ok, qu’elle est l’idée ???

  • /cache : Chemin vers le stockage du cache
  • levels=1:2 : Indique à Nginx d’orgniser le cache sur 2 niveaux de dossiers pour optimiser les temps de lecture/écriture. Ce paramètre doit être efficace sur un grand nombre de configuration.
  • keys_zone=mycache : Nom du cache pour faire le lien avec le ‘serveur’
  • max_size=2g : Taille Max, attention si vous utilisez TMPFS à ne pas mettre une taille trop grande pour éviter le swap.
  • inactive=1440m : Expiration du cache max. Ce paramètre est à coupler avec le max-age de vos ressources. 1440 doit correspondre à 24h, ce qui est énorme. Je vous laisse adapter pour votre site, sachant que le max-age de votre ressource doit prendre le pas.

TmpFS c’est quoi ?

Tmpfs est implémenté directement dans le noyau Linux depuis la version 2.6 (c’est à dire qu’il est disponible dans toutes les versions d’ubuntu supportés officiellement).

Il remplace les commandes de création de ramdisk, et offre l’avantage de redonner la mémoire vive aux systèmes d’exploitations en cas de non utilisation de celle-ci.

Un RAMDisk ou un volume Tmpfs dans ce cas présent est un espace dans la mémoire vive qui est utilisé pour stocker des fichiers temporairement (en effet le volume est vidé à chaque arrêt du système).

Un tmpfs est donc idéal pour stocker les fichiers temporaires de votre ordinateur. Ces fichiers temporaires sont des fichiers qui sont, par exemple, créé puis effacés lors de l’extraction d’un fichier compressé, lors d’une mise à jour, etc …

Extrait de la documentation Ubuntu

Ensuite dans la balise ‘server’, j’ajoute :

Ce qui permet de faire le lien entre ma déclaration de cache et ce serveur.

Permet d’ajouter un header au réponses, pour vous indiquer si ce contenu vient de votre nouveau cache 🙂

Cette ligne indique à Nginx d’utiliser le header « If‑Modified‑Since » pour optimiser la bande passante et ne rafraichir que ce qui à été modifié.

Cette configuration indique au serveur de servir sa page de cache puis de rafraichir le cache en tache de fond. Ceci évite un temps d’attente pour le client qui tombe au moment du rafraichissement du cache.

Ensuite un restart de Nginx et cela doit fonctionner :

La configuration complète :

 

Attention, pour que cela fonctionne, il faut que votre site gère correctement les header max-age de vos contenus. Pour cela, vous pouvez forcer votre .htaccess ou configuration de la façon suivante :

Bien-sur, les temps sont à paramétrer suivant vos choix. Cette configuration via HTAccess n’est valable que pour un site tournant avec Apache.

N’hésitez pas à poser vos questions dans les commentaires & bon courage avec Nginx en proxy cache.

 

Vous pouvez lire la documentation complète sur la page suivante :

  • Nginx : https://www.nginx.com/blog/nginx-caching-guide/
  • Wikipedia : https://fr.wikipedia.org/wiki/Nginx

 

 

 

 

 

 

About the author

Eric Wallet

Add Comment

Click here to post a comment

Votre adresse de messagerie ne sera pas publiée.