Retourner sur le site

Cache statique Nginx

Configurer le cache des fichiers statiques et les en-têtes de cache Nginx sur un VPS HolyCloud pour accélérer vos sites.

Cache statique Nginx

Sur un VPS Linux HolyCloud servant des sites avec Nginx, optimiser le cache des fichiers statiques (CSS, JS, images, polices) réduit la charge CPU et améliore le temps de chargement. Ce guide combine en-têtes expires / Cache-Control et zone de cache proxy optionnelle.

Prérequis

  • Nginx installé et site fonctionnel sur le VPS HolyCloud
  • Accès sudo
  • Domaine en HTTPS recommandé (Certbot)

Étape 1 : en-têtes de cache navigateur (assets versionnés)

Éditez le virtual host :

sudo nano /etc/nginx/sites-available/example.com

Bloc pour fichiers statiques courants :

location ~* \.(?:css|js|jpg|jpeg|gif|png|ico|svg|webp|woff2?|ttf|eot)$ {
    expires 30d;
    add_header Cache-Control "public, immutable";
    access_log off;
    try_files $uri =404;
}

Pour des assets sans hash dans le nom (risque de cache obsolète), utilisez une durée plus courte :

expires 7d;
add_header Cache-Control "public";

Test et rechargement :

sudo nginx -t
sudo systemctl reload nginx

Vérifiez les en-têtes :

curl -I https://www.example.com/assets/style.css

Recherchez Cache-Control et Expires.

Étape 2 : gzip / gzip_static

Compression côté Nginx :

gzip on;
gzip_vary on;
gzip_min_length 1024;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml image/svg+xml;

Si vous pré-générez .gz à la build :

gzip_static on;

Étape 3 : zone de cache proxy (reverse proxy)

Utile si Nginx sur le VPS HolyCloud fait proxy vers une app (Node, PHP-FPM upstream HTTP, autre port).

Créez les répertoires :

sudo mkdir -p /var/cache/nginx/proxy
sudo chown www-data:www-data /var/cache/nginx/proxy

Dans /etc/nginx/nginx.conf, bloc http :

proxy_cache_path /var/cache/nginx/proxy
    levels=1:2
    keys_zone=STATIC:10m
    max_size=500m
    inactive=7d
    use_temp_path=off;

Dans le server :

location /static/ {
    proxy_pass http://127.0.0.1:3000;
    proxy_cache STATIC;
    proxy_cache_valid 200 7d;
    proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
    add_header X-Cache-Status $upstream_cache_status;
}

Étape 4 : open_file_cache (fichiers locaux)

Réduit les appels système pour sites à fort trafic sur le même VPS :

open_file_cache max=10000 inactive=30s;
open_file_cache_valid 60s;
open_file_cache_min_uses 2;
open_file_cache_errors on;

Placez ces directives dans le bloc http de nginx.conf.

Étape 5 : sécurité et HTML dynamique

Ne mettez pas de cache long sur le HTML/API :

location / {
    add_header Cache-Control "no-store, no-cache, must-revalidate";
    try_files $uri $uri/ /index.php?$query_string;
}

Avec PHP-FPM :

location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php8.2-fpm.sock;
    add_header Cache-Control "no-store";
}

Étape 6 : purge et monitoring

Taille du cache proxy :

sudo du -sh /var/cache/nginx/proxy

Purge manuelle :

sudo rm -rf /var/cache/nginx/proxy/*
sudo systemctl reload nginx

Logs avec statut cache :

sudo tail -f /var/log/nginx/access.log | grep -i cache

Sur un VPS HolyCloud à ressources limitées, limitez max_size (ex. 200–500 Mo) pour ne pas saturer le disque.

Vérification

sudo nginx -t
curl -I https://www.example.com/favicon.ico
curl -I https://www.example.com/static/app.js

Besoin d'aide HolyCloud

  • Modifications sans effet : cache navigateur — testez en navigation privée ou videz le CDN si vous en utilisez un devant le VPS
  • X-Cache-Status: MISS permanent : vérifiez proxy_cache_key, cookies Set-Cookie qui désactivent le cache
  • Support HolyCloud : extrait nginx -T, URL testée, df -h (espace cache disque)