Mettre en place un cache HTTP inverse avec Varnish et Nginx

Publié le 15 juillet 2025

Performance
Proxy
Web

Pour améliorer la performance de vos sites web, Varnish Cache agit comme un cache HTTP inverse, diminuant la charge applicative. En combinant Nginx en front-end et Varnish en back-end, vous obtenez une architecture robuste et évolutive.

Prérequis

  • Serveur Linux (Debian, Ubuntu, CentOS)
  • Nginx installé
  • Varnish installé (v6+)

1. Configuration de Nginx en front-end

Dans /etc/nginx/sites-available/default :

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://127.0.0.1:6081;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

Redémarrez Nginx :

sudo systemctl reload nginx

2. Configuration de Varnish

Éditez /etc/varnish/default.vcl :

vcl 4.0;

backend default {
    .host = "127.0.0.1";
    .port = "8080";
}

sub vcl_recv {
    if (req.method == "PURGE") {
        if (client.ip != "127.0.0.1") {
            return (synth(403, "Forbidden"));
        }
        return (purge);
    }
}

sub vcl_backend_response {
    set beresp.ttl = 5m;
}

sub vcl_deliver {
    if (obj.hits > 0) {
        set resp.http.X-Cache = "HIT";
    } else {
        set resp.http.X-Cache = "MISS";
    }
}

Démarrez Varnish en écoutant sur le port 6081 et Nginx sur 8080 :

# Modifier /etc/default/varnish :
DAEMON_OPTS="-a :6081              -T localhost:6082              -p http_req_hdr_len=8192              -p http_req_size=16384              -b 127.0.0.1:8080"
sudo systemctl reload varnish

3. Tester le cache

curl -I http://example.com/

Vérifiez l’en-tête X-Cache: HIT ou MISS.

4. Vidange du cache

Autorisez les PURGE depuis localhost :

curl -X PURGE http://example.com/

5. Optimisation avancée

  • Ajustez beresp.ttl pour différents chemins.
  • Excluez les requêtes dynamiques (req.url ~ "^/api").
  • Surveillez Varnish avec varnishstat et varnishncsa.

Conclusion

Cette architecture Nginx + Varnish permet de réduire significativement les temps de réponse et la charge serveur, idéale pour les sites à fort trafic.

Besoin d'aide sur ce sujet ?

Notre équipe d'experts est là pour vous accompagner dans vos projets.

Contactez-nous

Articles similaires qui pourraient vous intéresser