ITSkillsCenter
Développement Web

Caddy reverse proxy 2026 : guide complet (HTTPS auto, HTTP/3, Caddyfile)

4 min de lecture

Caddy est en 2026 le reverse proxy moderne par excellence : HTTPS automatique sans configuration, syntaxe Caddyfile minimaliste, performance proche de Nginx, et écosystème de plugins riche (HTTP/3, Brotli, rate limiting, OAuth2, fail2ban). Pour les développeurs et PME africaines qui veulent un reverse proxy production-ready avec un minimum de friction, Caddy bat Nginx en simplicité et offre des fonctionnalités modernes (HTTP/3 natif) sans plugin tiers. Voici le guide complet 2026.

Ce pilier couvre l’écosystème complet. Les satellites détaillent : installation Caddy sur VPS, Caddy vs Nginx vs Traefik, headers sécurité CSP HSTS, rate limiting et fail2ban.

Pourquoi Caddy en 2026

  • HTTPS automatique via Let’s Encrypt, sans configuration. Renouvellement transparent.
  • Caddyfile lisible : 3 lignes pour servir un site avec HTTPS
  • HTTP/3 natif (QUIC) sans configuration : meilleur pour les utilisateurs mobiles africains
  • Reverse proxy stateful avec health checks, load balancing, sticky sessions
  • File server performant pour servir du statique
  • API REST de configuration pour automatisation
  • Plugins riches : OAuth2 proxy, rate limiting, IP filtering, geo blocking
  • Open-source Apache 2.0, écrit en Go (un binaire unique)

Caddy vs Nginx

Nginx reste plus utilisé en production en 2026 grâce à son inertie historique. Mais pour un nouveau projet, Caddy est généralement le meilleur choix : courbe d’apprentissage très douce, HTTPS qui marche sans réfléchir, configuration 5x plus courte. Voir notre comparatif détaillé.

Cas d’usage typiques

  • Reverse proxy devant Node.js, Go, PHP-FPM, Python WSGI
  • Servir un site Astro/Next.js statique buildé
  • Multi-domaine sur un seul VPS
  • Termination TLS pour Docker Compose stack
  • Edge proxy avec rate limiting et auth

Étape 1 — Installer Caddy

# Ubuntu/Debian
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy

# Vérifier
caddy version
systemctl status caddy

Voir notre tutoriel installation détaillé.

Étape 2 — Premier Caddyfile

# /etc/caddy/Caddyfile

# Site statique
exemple.sn {
    root * /var/www/exemple.sn
    file_server
    encode gzip zstd
}

# Reverse proxy vers app Node.js
api.exemple.sn {
    reverse_proxy 127.0.0.1:3000
}

# Multi-blocks pour la même config
*.exemple.sn, exemple.sn {
    redir https://www.exemple.sn{uri}
}
sudo systemctl reload caddy
# HTTPS automatique apparaît en quelques secondes

Étape 3 — Headers et sécurité

api.exemple.sn {
    reverse_proxy 127.0.0.1:3000
    
    header {
        Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
        X-Content-Type-Options "nosniff"
        X-Frame-Options "DENY"
        Referrer-Policy "strict-origin-when-cross-origin"
        Permissions-Policy "geolocation=(), camera=(), microphone=()"
    }
}

Voir notre tutoriel headers sécurité.

Étape 4 — Compression et cache

exemple.sn {
    root * /var/www/site/dist
    file_server
    
    # Brotli + gzip + zstd
    encode gzip zstd
    
    # Cache long pour assets fingerprintés
    @assets path *.js *.css *.woff2 *.png *.jpg *.svg *.webp
    header @assets Cache-Control "public, max-age=31536000, immutable"
    
    # HTML pas caché
    @html path *.html
    header @html Cache-Control "public, max-age=0, must-revalidate"
}

Étape 5 — Reverse proxy avancé

api.exemple.sn {
    reverse_proxy {
        to 127.0.0.1:3000 127.0.0.1:3001 127.0.0.1:3002
        lb_policy round_robin
        health_uri /health
        health_interval 10s
        health_timeout 3s
        
        transport http {
            keepalive 30s
            keepalive_idle_conns 32
        }
        
        header_up Host {host}
        header_up X-Real-IP {remote_host}
        header_up X-Forwarded-For {remote_host}
        header_up X-Forwarded-Proto {scheme}
    }
}

Étape 6 — Rate limiting

Caddy a un plugin officieux caddy-ratelimit. Voir notre tutoriel rate limiting et fail2ban.

Étape 7 — Wildcard et DNS-01

Pour un certificat *.exemple.sn, Caddy utilise le DNS-01 challenge. Configuration via plugin DNS provider (Cloudflare, OVH, Gandi) :

# Builder Caddy avec plugin Cloudflare
xcaddy build --with github.com/caddy-dns/cloudflare

# Caddyfile
*.exemple.sn {
    tls {
        dns cloudflare {env.CLOUDFLARE_API_TOKEN}
    }
    reverse_proxy 127.0.0.1:3000
}

Étape 8 — JSON config et API

Caddy supporte aussi un format JSON natif (plus verbeux mais plus puissant) et une API REST de configuration sur localhost:2019. Pratique pour automatiser via Ansible ou un orchestrateur.

Adaptation Afrique de l’Ouest

Pour une PME ouest-africaine, Caddy supprime toute la complexité Nginx + Certbot + cron renouvellement. HTTP/3 améliore la perf perçue sur connexions mobiles 4G instables (très fréquentes en Afrique). Avec quelques lignes de Caddyfile, vous gérez 10 domaines, 5 reverse proxies, et la sécurité headers.

Erreurs fréquentes

ErreurCauseSolution
HTTPS challenge failDNS pas propagéVérifier dig, attendre, retenter
« too many requests » Let’s EncryptRate limit hitTester avec staging CA d’abord
502 Bad GatewayBackend pas démarréVérifier service backend, port
Permission denied port 80/443Pas root, capability manquantesetcap cap_net_bind_service ou systemd

Pour aller plus loin

Besoin d'un site web ?

Confiez-nous la Création de Votre Site Web

Site vitrine, e-commerce ou application web — nous transformons votre vision en réalité digitale. Accompagnement personnalisé de A à Z.

À partir de 250.000 FCFA
Parlons de Votre Projet
Publicité