Passer de NGINX à Caddy

De mon expérience, la configuration de NGINX devient rapidement complexe et peut devenir une partie que personne ne veut toucher de peur de casser quelque chose. C'est cet aspect qui m'a fait chercher une alternative.

Caddy ?

Tout d'abord, qu'est-ce que Caddy ?
C'est un Serveur Web multiplateforme écrit en GO avec une configuration simple et une mise en place automatique du HTTPS (avec Letsencrypt).
Caddy est opensource sous licence Apache 2.0. À l'heure d'écriture son dépôt Github approche des 40k stars.

Comparaison

Nous allons comparer deux configuration minimales pour obtenir un reverse proxy basique.

Reverse proxy avec NGINX

server { listen 443 ssl; server_name example.com; location / { proxy_pass http://localhost:3000; } ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; } server { listen 80; server_name example.com; return 301 https://example.com$request_uri; }
Avec cette configuration, il faut aussi installer certbot et générer le certificat SSL.

Reverse proxy avec Caddy

example.com { reverse_proxy localhost:3000 }
C'est tout ! Caddy va lui même générer le certificat SSL et s'occuper de rediriger les requêtes HTTP en HTTPS.

Installation

Convaincu par Caddy ?
Pour l'installer il suffit de suivre les instructions d'installation ici.
Ensuite, créez votre fichier de configuration : /etc/caddy/Caddyfile
Puis, si vous avez un serveur NGINX qui tourne (ou un autre serveur qui écoute sur les ports 80 et 443), il faudra l'arrêter :
sudo systemctl stop nginx.service
sudo systemctl disable nginx.service
Enfin, il faudra démarrer Caddy, et faire en sorte qu'il soit lancé à chaque reboot :
sudo systemctl start caddy.service
sudo systemctl enable caddy.service
Voilà !
Bien entendu on peut faire bien plus que de simples reverse proxy avec Caddy, on peut par exemple servir des fichiers statiques, faire du load balancing, faire de la compression gzip...
Pour faire tout ça il faudra sans surprise lire la documentation !

Bonus

Caddy peut aussi être lancé sans aucun fichier de configuration, cela peut être pratique pour tester rapidement quelque chose, voici quelques exemples :

Serveur de fichiers statiques depuis le dossier courant

caddy file-server --listen localhost:4444
C'est l'équivalent de :
npx serve . -p 4444
mais en plus performant.

Reverse proxy avec HTTPS automatique

sudo caddy reverse-proxy --from example.com --to localhost:3000
Vous souhaitez être accompagné pour lancer votre projet digital ?
Déposez votre projet dès maintenant
Comment utiliser GitLab CI/CD pour améliorer votre flow de développement ?
Lors du développement d'une application, il y a toujours une petite appréhension lors la mise en production. Cette petite ...
Matthieu Locussol
Matthieu Locussol
Full-Stack Developer @ Galadrim
Comment changer de version de Node.js avec NVM ?
Vous voulez changer rapidement de version de `node` ? nvm est l’outil qu’il vous faut. Pourquoi nvm ? `node` est un exécutable. ...
Florian Yusuf Ali
Florian Yusuf Ali
Full-Stack Developer @ Galadrim
Next.js App Router : le cache et ses dangers
“Il y a seulement 2 problèmes compliqués en informatique : nommer les choses, et l’invalidation de cache”. Phil Karlton. Avec ...
Valentin Gerest
Valentin Gerest
Full-Stack Developer @ Galadrim