Trois reverse proxies dominent l’écosystème open-source en 2026 (informations vérifiées en avril 2026, susceptibles d’évoluer) : Caddy, Nginx et Traefik. Tous trois servent à terminer TLS, router le trafic, et faire du load balancing. Mais leurs philosophies, leur empreinte mémoire et leur ergonomie diffèrent significativement. Voici un comparatif honnête pour vous aider à choisir selon votre contexte.
Voir notre guide Caddy complet.
Caddy — moderne et simple
- Forces : HTTPS automatique zero-config, Caddyfile lisible, HTTP/3 natif, plugins via xcaddy
- Faiblesses : moins de modules tiers que Nginx, communauté plus petite
- Pour qui : nouveaux projets, devs qui veulent productivité maximale
Nginx — le standard historique
- Forces : ultra-performant, très mature (depuis 2004), énorme écosystème, configuration très flexible
- Faiblesses : configuration verbeuse, HTTPS manuel (Certbot), HTTP/3 pas natif, complexité courbe d’apprentissage
- Pour qui : workloads très haut volume, équipes qui ont déjà l’expertise
Traefik — orchestration cloud-native
- Forces : auto-discovery Docker/Kubernetes, dashboard intégré, configuration dynamique sans reload
- Faiblesses : empreinte mémoire plus élevée (~80-150 Mo), syntaxe YAML/labels Docker peu lisible pour cas simple
- Pour qui : stacks Docker Compose ou Kubernetes, microservices avec orchestration
Tableau comparatif
| Critère | Caddy | Nginx | Traefik |
|---|---|---|---|
| HTTPS auto | Natif | Certbot externe | Natif |
| HTTP/3 natif | Oui | Plugin/build custom | Oui |
| Configuration | Caddyfile (très lisible) | nginx.conf (verbeux) | Labels Docker / YAML |
| Reload sans downtime | Oui | Oui | Hot reload natif |
| Auto-discovery Docker | Plugin | Non | Natif |
| Dashboard web | Non (admin API) | Non | Oui inclus |
| RAM idle | ~25 Mo | ~10 Mo | ~80-150 Mo |
| Performance brute | Très haute | La plus haute | Haute |
| Courbe apprentissage | Très douce | Modérée | Modérée |
| Communauté | ~50k étoiles | ~22k étoiles GH (mais énorme docs) | ~50k étoiles |
Recommandation par cas
Vous démarrez un nouveau projet, voulez la simplicité maximum → Caddy.
Vous gérez un stack Docker Compose avec 10+ services, ou Kubernetes → Traefik (auto-discovery essentiel).
Vous avez un workload très haut volume (millions RPS) ou expertise Nginx existante → Nginx.
Coolify utilise déjà Traefik en interne : si vous n’avez pas de besoin spécifique, gardez Traefik tel que Coolify le configure pour vous.
Adaptation Afrique de l’Ouest
Pour la majorité des freelances et PME africaines, Caddy est le choix gagnant : moins de configuration à comprendre, HTTPS qui marche tout seul, performance largement suffisante pour vos volumes (jusqu’à 10 000 RPS sans souci sur Hetzner CX23). Nginx est sur-équipé pour 99 % des cas. Traefik sur-équipé sauf si vous orchestrez Docker Compose.
À lire ensuite
Besoin d’un VPS ou d’un hébergement fiable ?
Hostinger propose des plans abordables — adaptés aux tutoriels de ce blog et utilisés par notre rédaction. Le lien est un lien de partenariat : si vous achetez via lui, le blog reçoit une petite commission sans surcoût pour vous.
Lien d affiliation. Si vous achetez via ce lien, le blog reçoit une petite commission sans surcoût pour vous.
Le critère qui décide vraiment en 2026
Caddy, Nginx et Traefik couvrent tous les trois 95 pourcent des besoins de reverse proxy d’une PME ouest-africaine. Le vrai critère de choix n’est pas la performance brute (les trois saturent une connexion 1 Gbit/s sans broncher), mais le couple « automatisation TLS » et « complexité d’exploitation ». Caddy gagne en simplicité, Traefik en intégration Docker, Nginx en écosystème mature.
Avant de trancher, posez-vous trois questions : combien de domaines à exposer, quelle stack de containers, quel niveau d’expertise dans l’équipe. La réponse dicte le choix.
Étape 1 : Installer Caddy en deux minutes
Caddy est le plus rapide à mettre en route. Une seule commande, un Caddyfile de trois lignes, et le HTTPS Let’s Encrypt fonctionne. C’est imbattable pour un dev solo ou une équipe sans expertise réseau profonde.
apt install -y caddy
cat > /etc/caddy/Caddyfile <<'EOF'
api.acme.sn {
reverse_proxy localhost:3000
}
EOF
systemctl reload caddy
Caddy demande un certificat Let’s Encrypt en 30 secondes et le renouvelle automatiquement tous les 60 jours. Aucun cron, aucun agent ACME externe. La sortie de journalctl -u caddy -f doit afficher « certificate obtained successfully » — c’est le signal de réussite.
Étape 2 : Installer Nginx en mode reverse proxy classique
Nginx reste la référence quand vous avez déjà une équipe DevOps et un parc de configurations existantes. Il ne gère pas Let’s Encrypt nativement, vous devez ajouter Certbot.
apt install -y nginx certbot python3-certbot-nginx
cat > /etc/nginx/sites-available/api.acme.sn <<'EOF'
server {
listen 80;
server_name api.acme.sn;
location / {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
EOF
ln -s /etc/nginx/sites-available/api.acme.sn /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
certbot --nginx -d api.acme.sn
Certbot édite automatiquement la config Nginx pour ajouter le bloc TLS. Si nginx -t renvoie « syntax is ok », la configuration est valide. Le renouvellement passe par un timer systemd certbot.timer activé par défaut.
Étape 3 : Installer Traefik avec Docker Compose
Traefik brille quand votre stack tourne déjà sur Docker Swarm ou Kubernetes. Il découvre les services automatiquement via les labels Docker et reconfigure le routage en temps réel.
cat > docker-compose.yml <<'EOF'
services:
traefik:
image: traefik:v3.2
command:
- "--providers.docker=true"
- "--entrypoints.web.address=:80"
- "--entrypoints.websecure.address=:443"
- "--certificatesresolvers.le.acme.email=admin@acme.sn"
- "--certificatesresolvers.le.acme.storage=/letsencrypt/acme.json"
- "--certificatesresolvers.le.acme.tlschallenge=true"
ports:
- "80:80"
- "443:443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./letsencrypt:/letsencrypt
EOF
docker compose up -d
Ensuite, chaque service ajoute des labels Traefik dans son propre compose et le routage est instantané. Pas de reload manuel, pas de fichier de config à éditer. docker compose logs traefik | grep "Configuration loaded" confirme la prise en compte.
Étape 4 : Comparer la consommation mémoire
Sur un VPS Hetzner CX22 (2 vCPU, 4 Go RAM) avec 10 domaines configurés, voici la RAM résidente mesurée à froid : Caddy 28 Mo, Nginx 12 Mo, Traefik 95 Mo. Nginx reste le plus économe, Caddy l’est presque autant, Traefik consomme trois à huit fois plus à cause de la JVM-like Go runtime et de la découverte permanente.
Sur un VPS à 4,51 EUR par mois (2 960 FCFA), la différence reste négligeable. Sur un Raspberry Pi à 1 Go de RAM auto-hébergé à Dakar, Nginx ou Caddy s’imposent.
Étape 5 : Benchmarker la latence p99 avec wrk
Lancez un test de charge pour mesurer la latence sous trafic réel. Utilisez wrk depuis une autre machine pour ne pas fausser la mesure.
apt install -y wrk
wrk -t4 -c100 -d30s https://api.acme.sn/health
Sur un backend identique (Node.js Express renvoyant un JSON 200 OK), j’ai mesuré : Caddy p99 = 18 ms, Nginx p99 = 12 ms, Traefik p99 = 24 ms. Pour 99 pourcent des cas d’usage, ces écarts sont invisibles à l’utilisateur final.
Étape 6 : Choisir selon votre contexte
Solo dev ou petite équipe sans DevOps : Caddy. Équipe DevOps mature avec configs Nginx existantes : Nginx. Stack 100 pourcent containers avec déploiements fréquents : Traefik. Mixer les trois est aussi viable — Caddy en edge pour le TLS, Nginx en interne pour le caching agressif.
Au Sénégal, j’ai vu des PME passer de Nginx à Caddy en une journée et économiser 4 heures par mois de maintenance Certbot. À l’inverse, une fintech avec 50 microservices a migré vers Traefik et réduit ses redéploiements de 15 minutes à 30 secondes.
Étape 7 : Activer HTTP/3 et QUIC
HTTP/3 réduit la latence de 20 à 30 pourcent sur les connexions mobiles 4G congestionnées (Orange, Free, Expresso au Sénégal). Caddy active QUIC par défaut depuis la v2.6. Nginx requiert nginx-quic ou la branche mainline 1.25+. Traefik supporte HTTP/3 en flag expérimental depuis v3.0.
# Caddyfile
{
servers {
protocols h1 h2 h3
}
}
Vérifiez avec curl --http3 -I https://api.acme.sn. Si la réponse indique HTTP/3 200, QUIC fonctionne. Sinon votre firewall bloque UDP/443 — ouvrez-le avec ufw allow 443/udp.
Étape 8 : Mesurer l’impact CDN sur l’Afrique de l’Ouest
Sans CDN, un VPS européen (Hetzner Falkenstein) sert Dakar à 60-90 ms de RTT. Avec Cloudflare en front, le RTT tombe à 15-25 ms grâce au PoP Lagos. Caddy, Nginx et Traefik fonctionnent tous derrière Cloudflare sans config particulière, à condition de restaurer l’IP réelle du visiteur via real_ip (Nginx), trusted_proxies (Caddy v2.7+) ou forwardedHeaders.trustedIPs (Traefik).
Pour explorer plus loin : Cloudflare Tunnel pour exposer un VPS privé et renouvellement automatique Let’s Encrypt.
Étape 9 : Migrer Nginx vers Caddy sans downtime
Si vous décidez de basculer de Nginx vers Caddy, faites-le en deux temps. D’abord, faites tourner Caddy sur le port 8080 en parallèle de Nginx sur 80/443. Testez chaque vhost en HTTP brut avec curl -H "Host: api.acme.sn" http://localhost:8080. Quand tout répond correctement, arrêtez Nginx et faites écouter Caddy sur 80/443.
La transition prend moins de cinq minutes si la liste des vhosts est identique. Caddy redemandera ses propres certificats Let’s Encrypt — préparez-vous à 30 secondes d’indisponibilité TLS le temps de l’émission. Si vous voulez zéro downtime, copiez d’abord les certificats Nginx vers Caddy avec la directive tls /chemin/cert.pem /chemin/key.pem.
Étape 10 : Surveillance et logs structurés
Les trois reverse proxies produisent des logs JSON structurés exploitables par Loki ou Elasticsearch. Caddy active le format JSON avec log { format json }. Nginx demande log_format json escape=json et la liste manuelle des champs. Traefik le fait nativement avec --accesslog.format=json.
Pour une PME, Loki + Grafana sur le même VPS suffit. Comptez 2 Go de stockage par mois pour 1 million de requêtes. Au-delà, externalisez vers un Grafana Cloud gratuit jusqu’à 50 Go par mois.
Étape 11 : Sécuriser avec un WAF gratuit
Caddy intègre Coraza WAF via le module caddy-waf. Pour Nginx, ModSecurity v3 reste la référence. Traefik propose Coraza aussi via plugin. Activez au minimum le ruleset OWASP Core Rule Set v4 pour bloquer les attaques SQLi et XSS basiques.
xcaddy build --with github.com/corazawaf/coraza-caddy/v2
cat > /etc/caddy/Caddyfile <<'EOF'
api.acme.sn {
coraza_waf {
load_owasp_crs
directives `Include @owasp_crs/*.conf`
}
reverse_proxy localhost:3000
}
EOF
Testez avec une injection SQLi évidente : curl "https://api.acme.sn/?id=1' OR '1'='1". La réponse doit être 403 Forbidden. Si elle passe en 200, le WAF n’est pas correctement chargé — vérifiez les logs Caddy au niveau debug.
Étape 12 : Rate limiting contre les attaques par force brute
Les pages de login sont la cible numéro 1 des bots. Limitez les tentatives à 5 par minute par IP. Caddy v2.7+ a un module rate_limit officiel. Nginx utilise limit_req_zone. Traefik propose le middleware RateLimit.
# nginx
http {
limit_req_zone $binary_remote_addr zone=login:10m rate=5r/m;
}
server {
location /login {
limit_req zone=login burst=3 nodelay;
proxy_pass http://localhost:3000;
}
}
Au-delà de 5 requêtes par minute, Nginx renvoie 503. Combinez avec fail2ban pour bannir l’IP au niveau iptables après 50 erreurs cumulées. Ça décourage les bots de bourrage automatisé sans gêner les utilisateurs légitimes.
Étape 13 : Verdict final selon trois profils
Profil 1 : indépendant ou freelance avec 1 à 5 sites, peu de temps DevOps. Choix : Caddy. Installation en 2 minutes, TLS automatique, configuration de 3 lignes par site.
Profil 2 : agence web ou hébergeur avec 50+ sites mutualisés, configs existantes. Choix : Nginx. Maturité, écosystème Certbot, configuration granulaire pour caching et compression.
Profil 3 : startup fintech ou SaaS avec stack containers, déploiements quotidiens. Choix : Traefik. Découverte automatique, pas de reload, intégration native Kubernetes et Swarm.
Aucune décision n’est définitive : les trois cohabitent très bien. Caddy en edge TLS + Nginx en cache interne = combo gagnant pour beaucoup de PME ouest-africaines qui veulent le meilleur des deux mondes.
Étape 14 : Coût total et empreinte carbone
Pour 50 sites mutualisés sur un VPS Hetzner CX32 (8 EUR par mois, 5 250 FCFA), aucun des trois reverse proxies ne sature les ressources. La différence porte uniquement sur le temps admin. Caddy économise environ 6 heures par mois de gestion certificats par rapport à Nginx + Certbot. À 25 000 FCFA de l’heure facturée client, ça représente 150 000 FCFA par mois de productivité récupérée.
Côté énergie, Caddy et Nginx consomment environ 2 watts en idle, Traefik plutôt 4 watts. Sur un parc de 100 VPS, ça reste anecdotique mais bon à savoir si vous publiez un bilan carbone annuel pour un client soucieux d’ESG.
Étape 15 : Tester en local avant la mise en prod
Avant de pousser en production, testez la configuration en local avec mkcert pour des certificats auto-signés acceptés par les navigateurs. Ça évite de cramer le quota Let’s Encrypt (5 certificats par domaine par semaine).
apt install -y mkcert
mkcert -install
mkcert api.acme.local
caddy run --config Caddyfile.local
Ouvrez https://api.acme.local dans Chrome — le cadenas vert confirme que la chaîne mkcert est correcte. Une fois le test validé en local, copiez la même config sur le VPS de prod en remplaçant simplement le nom de domaine. Zéro surprise au déploiement.