Après avoir vu comment utiliser Nginx en tant que reverse proxy, je vais vous expliquer dans ce tutoriel comment configurer la mise en cache des éléments statiques (image, fichiers css, js ….).
L’utilisation du cache va permettre de réduire le nombre de requêtes HTTP au serveur Web et donc de réduire ça charge de travail.
La première étape va être de créer un dossier sur le serveur qui stocke le cache.
sudo mkdir /var/cache/nginx_cache_sitename
Vous pouvez créer le dossier cache où vous le souhaitez sur le serveur, si vous activez le cache sur plusieurs sites (virtualhost), je vous conseille de séparer les dossiers.
Maintenant que nous avons le dossier, nous allons passer à la configuration du virtualhost.
Ouvrir le fichier du virtualhost :
sudo nano /etc/nginx/sites-available/sitename
Il faut en premier déclarer le cache en utilisant le paramètre proxy_cache_path
qui doit être ajouté avant le bloc server{}
Pour cela on va utiliser la paramètre proxy_cache_path pour indiquer la configuration du cache.
proxy_cache_path /var/cache/nginx_cache_sitename levels=1:2 keys_zone=cache_name_site:10m max_size=4g inactive=60m use_temp_path=off;
Cette ligne sert à configurer l’emplacement du cache, ainsi que sa taille et la durée de vie. Le paramètre keys_zone est important, car on va l’utiliser ensuite pour indiquer quel cache utilisé.
Maintenant, on va configurer le virtualhost pour utiliser le cache pour les fichiers statiques.
La configuration se fait dans le bloc server{}
en déclarant un bloc location{}
.
Le code ci-dessous permet la mise en cache des éléments statiques (image, police, css et js).
# Cache IMG/CSS/JS/Font
location ~* \.(?:jpg|jpeg|gif|png|ico|woff2|css|js)$ {
proxy_cache cache_name_site;
proxy_pass https://taget_server_or_name;
proxy_ssl_verify off;
include proxy_params;
add_header X-Cache-Status $upstream_cache_status;
}
Comme vous pouvez le voir, c’est la même chose que pour une configuration sauf que l’on ajoute le paramètre
proxy_cache
avec comme valeur la clef du cache qui a été configurée.Le paramètre
add_header X-Cache-Status $upstream_cache_status;
permet d’ajouter l’entête de réponse de la requête si la cache a été utilisé.
Ce qui nous donne dans un navigateur :
Une fois la configuration du cache ajouté à virtualhost, tester la configuration :
sudo nginx -t
Recharger la configuration pour la prise en compte :
sudo systemctl reload nginx
Quelques informations complémentaires
Vider le cache Nginx :
Pour purger le cache, il vous suffit de vider le dossier :
sudo rm -rf /var/cache/nginx_cache/*
Il existe d’autre méthode en utilisant en utilisant une URL.
Cache en mémoire – RAM
Il est possible aussi d’utiliser la mémoire vive (RAM) du serveur afin d’avoir un cache encore plus rapide.
Créer le dossier de cache :
sudo mkdir -p /var/cache/nginx_ram
Monter le dossier en mémoire vive :
sudo mount -t tmpfs -o size=2G tmpfs /var/cache/nginx_ram
Il ne vous reste plus qu’à configurer ce dossier en emplacement de cache.
Pour rendre persistant le montage :
Ouvrir le fichier /etc/fstab :
sudo /etc/fstab
Ajouter la ligne suivante en adaptant à votre configuration :
sudo tmpfs /var/cache/nginx_ram tmpfs defaults,size=2G 0 0
Vous savez maintenant comment configurer le cache avec Nginx dans une utilisation en tant que reverse proxy.
L’utilisation du cache est pratique quand Nginx est placé en frontale, cela permet de limiter le nombre de requêtes HTTP à destination du serveur qui héberge l’application Web.
La configuration du cache est souvent utilisé quand un serveur Apache2 se trouve derrière le proxy, car Nginx est connu pour être très performant pour service des fichiers statiques.