Guide de Configuration du Cache Varnish pour Magento 2
Pourquoi Configurer le Cache Varnish dans Magento 2 ?
Magento 2 est livré avec un cache de page complet (FPC) intégré basé soit sur le système de fichiers, soit sur Redis. Mais pour les boutiques à fort trafic, aucune des deux options ne passe à l’échelle. Varnish Cache est l’accélérateur HTTP standard de l’industrie qui peut servir des pages mises en cache en moins de 5 ms — sans jamais toucher à PHP ou MySQL.
Impact SEO : Un TTFB (Time To First Byte) plus rapide améliore directement les Core Web Vitals (LCP, FID), que Google utilise comme signaux de classement depuis 2021.
Prérequis
Avant de commencer, assurez-vous d’avoir :
- Magento 2.4.x installé et fonctionnel
- Varnish 7.x installé sur votre serveur (ou en conteneur Docker)
- Accès root ou sudo à votre serveur
- Accès à la CLI Magento (
bin/magento) - Un serveur web Nginx ou Apache fonctionnel
Étape 1 — Installer Varnish sur Votre Serveur
Ubuntu / Debian
sudo apt update
sudo apt install varnish -y
varnishd -V
CentOS / RHEL
sudo yum install varnish -y
varnishd -V
Vérifier la version de Varnish
Magento 2.4.x prend en charge Varnish 6.x et 7.x. Utilisez toujours l’une de ces versions pour garantir une compatibilité totale.
Étape 2 — Générer le Fichier VCL depuis l’Admin Magento 2
Magento 2 peut générer automatiquement un fichier VCL (Varnish Configuration Language) adapté à votre boutique. C’est l’approche la plus fiable.
Via le Panneau d’Admin Magento
- Allez dans Magasins → Configuration → Avancé → Système
- Développez Cache de Page Complet
- Définissez Application de Cache sur
Varnish Cache - Cliquez sur Configuration Varnish pour développer les paramètres
- Remplissez :
- Liste d’accès :
localhost(ou l’IP de votre serveur Magento) - Hôte backend :
127.0.0.1 - Port backend :
8080(le port de votre serveur web) - Délai de grâce :
300secondes
- Liste d’accès :
- Cliquez sur Exporter le VCL pour Varnish 7 (ou 6, selon votre version)
Via la CLI Magento
bin/magento varnish:vcl:generate \
--export-version=7 \
--output-file=/etc/varnish/default.vcl
Étape 3 — Configurer Varnish pour Écouter sur le Port 80
Par défaut, Varnish écoute sur le port 6081. Pour la production, vous voulez Varnish sur le port 80 et votre serveur web sur le port 8080.
Modifiez la configuration du service Varnish :
sudo nano /etc/default/varnish
Mettez à jour la ligne DAEMON_OPTS :
DAEMON_OPTS="-a :80 \
-T localhost:6082 \
-f /etc/varnish/default.vcl \
-S /etc/varnish/secret \
-s malloc,256m"
Pour les systèmes systemd (Ubuntu 18.04+), modifiez aussi la surcharge du fichier unité :
sudo systemctl edit varnish
Ajoutez :
[Service]
ExecStart=
ExecStart=/usr/sbin/varnishd \
-a :80 \
-T localhost:6082 \
-f /etc/varnish/default.vcl \
-S /etc/varnish/secret \
-s malloc,256m
Étape 4 — Déplacer Votre Serveur Web sur le Port 8080
Nginx
# /etc/nginx/sites-available/magento
server {
listen 8080;
server_name yourdomain.com;
root /var/www/magento/pub;
# ... reste de votre config Nginx Magento
}
Apache
# /etc/apache2/ports.conf
Listen 8080
# /etc/apache2/sites-available/magento.conf
<VirtualHost *:8080>
ServerName yourdomain.com
DocumentRoot /var/www/magento/pub
# ... reste de la config
</VirtualHost>
Redémarrez votre serveur web :
sudo systemctl restart nginx
# ou
sudo systemctl restart apache2
Étape 5 — Appliquer le VCL et Démarrer Varnish
Copiez le VCL généré vers le répertoire de configuration Varnish :
sudo cp /path/to/generated.vcl /etc/varnish/default.vcl
Testez la syntaxe VCL avant de redémarrer :
sudo varnishd -C -f /etc/varnish/default.vcl
Si pas d’erreurs, redémarrez Varnish :
sudo systemctl restart varnish
sudo systemctl enable varnish
Étape 6 — Activer Varnish dans Magento 2
Via la CLI Magento (Recommandé)
bin/magento config:set system/full_page_cache/caching_application 2
bin/magento cache:flush
Valeur 2 = Varnish, valeur 1 = FPC intégré.
Vérifier la configuration
bin/magento config:show system/full_page_cache/caching_application
Étape 7 — Configurer ESI (Edge Side Includes) pour les Blocs Dynamiques
Varnish utilise ESI pour mettre en cache les pages complètes tout en gardant les blocs dynamiques (panier, nom du client, etc.) à jour. Magento 2 prend en charge ESI nativement.
Assurez-vous que ESI est activé dans votre VCL (il devrait être inclus dans le VCL auto-généré) :
sub vcl_recv {
# Activer le traitement ESI
if (req.url ~ "^/page_cache/block/esi") {
return(pass);
}
}
Dans l’Admin Magento :
- Allez dans Magasins → Configuration → Avancé → Développeur
- Activez Utiliser la version JavaScript de ESI si nécessaire
Étape 8 — Régler le TTL et les En-Têtes de Cache
Le VCL généré inclut des valeurs par défaut raisonnables, mais vous pouvez régler le TTL (Time To Live) pour de meilleurs taux de succès.
TTL Personnalisé dans le VCL
sub vcl_backend_response {
# Mettre en cache les pages Magento pendant 1 heure
if (beresp.http.X-Magento-Tags) {
set beresp.ttl = 3600s;
set beresp.grace = 300s;
}
}
Valeurs TTL Recommandées
| Type de Contenu | TTL Recommandé |
|---|---|
| Pages produit | 3600s (1 heure) |
| Pages catégorie | 7200s (2 heures) |
| Pages CMS | 86400s (1 jour) |
| Panier/Commande | 0s (jamais en cache) |
| Zone client | 0s (jamais en cache) |
Étape 9 — Vérifier que Varnish Fonctionne
Vérifier les En-Têtes de Réponse
curl -I https://yourdomain.com
Recherchez ces en-têtes dans la réponse :
X-Cache: HIT ← Page servie depuis le cache Varnish
X-Cache: MISS ← Première requête, cache en cours de chargement
Age: 3542 ← Secondes depuis la mise en cache de la page
Via: 1.1 varnish ← Confirme que le trafic passe par Varnish
Statistiques Varnish en Direct
varnishstat
Concentrez-vous sur :
MAIN.cache_hit— requêtes en cache serviesMAIN.cache_miss— requêtes allant vers Magento- Ratio de succès =
cache_hit / (cache_hit + cache_miss)— visez > 85%
Journal Varnish (Temps Réel)
varnishlog -g request -q "ReqURL ~ '/'"
Étape 10 — Purger le Cache Varnish depuis Magento
Magento 2 envoie des requêtes PURGE à Varnish lorsque des produits, catégories ou pages CMS sont mis à jour. Cela nécessite la bonne ACL dans votre VCL.
Vérifier l’ACL dans le VCL
acl purge {
"localhost";
"127.0.0.1";
"::1";
# Ajoutez l'IP de votre serveur Magento si séparé
}
sub vcl_recv {
if (req.method == "PURGE") {
if (!client.ip ~ purge) {
return(synth(403, "Non autorisé."));
}
return(purge);
}
}
Vidage Manuel du Cache depuis la CLI Magento
# Vider le FPC (déclenche la purge Varnish)
bin/magento cache:flush full_page
# Ou depuis l'Admin : Système → Gestion du Cache → Vider le Cache Magento
Problèmes Courants et Dépannage
Problème 1 — Varnish ne Met Pas en Cache (Toujours MISS)
Cause : Magento envoie des en-têtes Cache-Control: no-cache ou Set-Cookie.
Correctif : Vérifiez votre VCL vcl_recv — les cookies pour les utilisateurs connectés doivent contourner le cache, mais les utilisateurs anonymes ne doivent pas définir de cookies.
# En-têtes de débogage
curl -I -v https://yourdomain.com 2>&1 | grep -i cache
Problème 2 — Données Panier/Client Incorrectes
Cause : ESI mal configuré, ou Varnish met en cache des blocs dynamiques.
Correctif : Assurez-vous que les règles de passage ESI sont dans votre VCL et que les blocs Cacheable=false de Magento sont exclus.
Problème 3 — HTTPS Ne Fonctionne Pas via Varnish
Cause : Varnish ne gère pas SSL/TLS nativement.
Correctif : Utilisez Nginx comme terminateur TLS devant Varnish :
Navigateur → Nginx:443 (TLS) → Varnish:80 → Nginx/Apache:8080 (Magento)
server {
listen 443 ssl;
server_name yourdomain.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
location / {
proxy_pass http://127.0.0.1:80;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header Host $host;
}
}
Problème 4 — Varnish Ne Démarre Pas Après un Changement de VCL
Correctif : Validez toujours le VCL avant de l’appliquer :
varnishd -C -f /etc/varnish/default.vcl && echo "VCL OK"
Avantages SEO du Cache Varnish sur Magento 2
Configurer Varnish correctement apporte des améliorations SEO mesurables :
- TTFB sous 100ms → Meilleurs Core Web Vitals (LCP, FID/INP)
- Charge serveur réduite → Plus de budget d’exploration pour Googlebot
- Rendu de page plus rapide → Taux de rebond plus bas → Meilleurs signaux d’engagement
- Architecture évolutive → Gère les pics de trafic sans erreurs 503 qui nuisent au classement
Stratégie de Mots-Clés pour Ce Sujet
Section pour Faouzi Yahyaoui — Rapport d’Intelligence SEO
| Mot-Clé | Volume Mensuel (FR+INT) | Difficulté | Intention |
|---|---|---|---|
| configure varnish cache magento 2 | ~1 200/mois | 42/100 | Informationnelle |
| magento 2 varnish setup | ~900/mois | 38/100 | Informationnelle |
| magento 2 varnish vcl | ~600/mois | 35/100 | Informationnelle |
| magento 2 full page cache varnish | ~500/mois | 30/100 | Informationnelle |
| varnish magento 2 tutorial | ~400/mois | 28/100 | Informationnelle |
| magento 2 varnish not working | ~300/mois | 20/100 | Dépannage |
| magento 2 cache ttl varnish | ~150/mois | 18/100 | Longue traîne |
Liens internes recommandés à ajouter :
/magento-2-redis-cache-setup— Redis comme complément de cache de session/magento-2-nginx-configuration— Configuration backend Nginx/magento-2-performance-optimization— Page pilier parente/magento-2-full-page-cache— Aperçu du FPC
Liens externes recommandés (sources autorisées) :
Conclusion
Configurer le cache Varnish dans Magento 2 est l’une des optimisations de performance au meilleur retour sur investissement pour votre boutique. Avec une configuration appropriée — Varnish sur le port 80, votre serveur web sur le 8080, ESI activé et des ACL de purge correctes — vous pouvez atteindre des taux de succès de cache de 85 à 95% et servir des pages en quelques millisecondes.
Le résultat : des pages plus rapides, de meilleurs Core Web Vitals, un meilleur classement Google et une expérience utilisateur améliorée qui convertit.
Besoin d’aide pour optimiser votre configuration Varnish ou votre FPC Magento ? Découvrez mon service d’optimisation des performances et mon service d’optimisation VPS .