← Tous les articles >
Magento 2Varnish CachePerformance OptimizationSEODevOpsCaching

Guide de Configuration du Cache Varnish pour Magento 2

Share: LinkedIn X Facebook

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

  1. Allez dans Magasins → Configuration → Avancé → Système
  2. Développez Cache de Page Complet
  3. Définissez Application de Cache sur Varnish Cache
  4. Cliquez sur Configuration Varnish pour développer les paramètres
  5. 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 : 300 secondes
  6. 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 :

  1. Allez dans Magasins → Configuration → Avancé → Développeur
  2. 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 ContenuTTL Recommandé
Pages produit3600s (1 heure)
Pages catégorie7200s (2 heures)
Pages CMS86400s (1 jour)
Panier/Commande0s (jamais en cache)
Zone client0s (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 servies
  • MAIN.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/mois42/100Informationnelle
magento 2 varnish setup~900/mois38/100Informationnelle
magento 2 varnish vcl~600/mois35/100Informationnelle
magento 2 full page cache varnish~500/mois30/100Informationnelle
varnish magento 2 tutorial~400/mois28/100Informationnelle
magento 2 varnish not working~300/mois20/100Dépannage
magento 2 cache ttl varnish~150/mois18/100Longue 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 .