Caddy vs nginx : HTTPS, configuration et lequel choisir
Caddy vs nginx
Caddy vs nginx : HTTPS automatique et configs côte à côte | We.Inc
Caddy vs nginx pour de vrais usages : HTTPS automatique, sites statiques, reverse proxy, load balancing et WebSockets, avec un générateur qui écrit les deux configurations pour votre domaine.
La grande différence, ce sont les certificats. Caddy sert chaque site en HTTPS par défaut : il obtient et renouvelle les certificats auprès de Let's Encrypt ou ZeroSSL et redirige le HTTP pour vous. nginx a besoin de fichiers de certificat que vous fournissez, via un client ACME ou son module acme séparé. Les Caddyfiles sont plus courts ; nginx offre un contrôle plus fin et un historique bien plus long.
Caddy et nginx comparés sur les tâches courantes
Tâche
Caddy
Certificats HTTPS
Automatiques pour tout domaine public de la configuration
Vous faites pointer ssl_certificate vers des fichiers, ou ajoutez le module séparé ngx_http_acme_module
Redirection HTTP vers HTTPS
Automatique
Un bloc server sur le port 80 qui renvoie un 301
Compression
encode zstd gzip
gzip on
Reverse proxy
reverse_proxy localhost:3000
proxy_pass dans une location, plus des en-têtes
WebSockets via le proxy
Gérés automatiquement
Transmettre les en-têtes Upgrade et Connection
Load balancing par défaut
round robin
Health checks actifs
health_uri dans reverse_proxy
health_check uniquement dans l'édition commerciale
Vérification et rechargement de la config
caddy validate, caddy reload
nginx -t, nginx -s reload
La plupart des comparatifs s'arrêtent aux fonctionnalités. Ici, vous saisissez un domaine et un port d'application et obtenez les deux configurations, pour voir exactement ce que chaque serveur vous demande d'écrire pour le même résultat. Sous le générateur se trouvent des extraits côte à côte pour les tâches les plus fréquentes, puis des notes honnêtes sur les cas où chacun convient.
Saisissez votre domaine et choisissez si le serveur doit servir des fichiers statiques ou transmettre les requêtes à une application.
Activez ou désactivez la compression et la redirection www pour voir les lignes nécessaires à chaque serveur.
Copiez le Caddyfile à côté du binaire caddy et lancez caddy run, ou copiez le bloc nginx dans un fichier de votre dossier de sites.
Pour nginx, obtenez d'abord un certificat avec votre client ACME et mettez à jour les deux chemins de certificat avant de recharger.
Caddy ne peut obtenir un certificat public que si l'enregistrement A ou AAAA du domaine pointe vers la machine et que les ports 80 et 443 sont accessibles depuis l'extérieur.
Donnez à Caddy un stockage persistant et accessible en écriture pour son répertoire de données. Dans des conteneurs, montez un volume, sinon il redemande des certificats à chaque redémarrage.
Lancez caddy fmt sur les Caddyfiles modifiés à la main ; il range l'indentation de la même façon à chaque fois.
Sur nginx, testez avec nginx -t avant chaque rechargement. La commande vérifie la syntaxe et tente aussi d'ouvrir les fichiers auxquels la configuration fait référence, comme les chemins de certificat.
Depuis Caddy 2.8, la directive root n'a plus besoin du matcher *, donc root /srv fonctionne. Les anciens guides qui écrivent root * /srv restent valides.
Questions fréquentes
Caddy peut-il remplacer nginx tel quel ?
Pour les sites statiques, les reverse proxy et le load balancing simple, généralement oui, et la configuration raccourcit. Les grosses installations nginx qui utilisent de nombreux modules tiers, une logique map et rewrite complexe ou un cache finement réglé n'ont pas toujours d'équivalent direct dans Caddy : traduisez et testez un site à la fois.
nginx gère-t-il désormais le HTTPS automatique ?
nginx dispose d'un ngx_http_acme_module qui implémente ACME, mais il n'est pas compilé par défaut. Vous l'installez comme module dynamique séparé (le package nginx-module-acme) et configurez un émetteur. Sans lui, les certificats viennent d'un client externe.
Caddy peut-il fournir du HTTPS sur localhost ?
Oui. Pour localhost et les noms internes, Caddy crée sa propre autorité de certification locale et émet des certificats à partir d'elle. Votre système peut vous demander une fois de faire confiance à son certificat racine.
Lequel est le plus performant ?
Nous ne publions pas de chiffres de vitesse, car ils varient selon le matériel, les réglages TLS et la charge. Les deux gèrent sans peine les sites web et API classiques. Si le débit brut compte pour vous, faites un benchmark avec votre propre trafic sur vos propres serveurs.
Caddy prend-il en charge le load balancing et les health checks ?
Oui. Listez plusieurs upstreams dans reverse_proxy, choisissez une lb_policy comme round_robin ou least_conn, et ajoutez health_uri pour les contrôles actifs ou fail_duration pour les contrôles passifs. Sans politique, Caddy choisit les upstreams au hasard.
Ce que couvre vraiment le HTTPS automatique
Quand un Caddyfile nomme un domaine public, Caddy obtient un certificat via ACME, sert le site sur le port 443, redirige le port 80 vers HTTPS et renouvelle le certificat en arrière-plan. Si un émetteur échoue, il réessaie et peut basculer vers un autre. Rien dans la configuration ne mentionne TLS, sauf si vous voulez changer les valeurs par défaut.
nginx vous laisse vous en charger. La configuration habituelle est un client ACME qui écrit les fichiers de certificat et recharge nginx après le renouvellement, ou le module acme plus récent que vous installez volontairement.
Quand nginx convient mieux
nginx est partout : dans les distributions, les images de conteneurs et les panneaux d'hébergement, avec de la documentation et des réponses pour presque toutes les situations. Les équipes qui l'utilisent déjà, dépendent de modules particuliers ou ont besoin d'un contrôle fin sur le buffering et le cache ont peu de raisons de migrer.
Quand Caddy convient mieux
Les petites équipes, les projets perso et les nombreux domaines profitent le plus de ne pas avoir à gérer de certificats. Son format de configuration natif est le JSON, que caddy adapt produit à partir d'un Caddyfile, et caddy reload envoie une nouvelle configuration au processus en cours via son API d'administration, sans interruption.
Load balancing sur trois serveurs d'application
Caddyfile
Round robin sur trois backends, avec des health checks en arrière-plan sur /healthz.
Le round robin est la méthode par défaut. nginx open source ne contrôle la santé que de façon passive, à travers les requêtes échouées.
Proxy des WebSockets
Caddyfile
reverse_proxy effectue l'upgrade et garde un tunnel bidirectionnel ouvert, sans ligne supplémentaire.
Les en-têtes Upgrade et Connection doivent être transmis explicitement ; proxy_http_version 1.1 est nécessaire avant nginx 1.29.7.