Utiliser le générateur Nginx / Caddy pas à pas
Site statique, PHP ou application : comment remplir le générateur de configuration Nginx ou Caddy, installer le fichier, obtenir le HTTPS et vérifier que tout marche.
Le générateur Nginx / Caddy écrit la configuration d’un site pour un serveur web installé directement sur le système (pas dans Docker). Il sert dans trois cas : publier un site statique, un site PHP (WordPress…), ou mettre une application derrière un vrai nom de domaine en HTTPS.
Nginx ou Caddy ?
- Caddy obtient et renouvelle les certificats HTTPS tout seul, et sa configuration tient en quelques lignes. Si vous partez de zéro, c’est le plus simple.
- Nginx est partout, très documenté, et sans doute déjà installé si vous reprenez un serveur existant. Le HTTPS passe par Certbot.
Ne mettez pas les deux : un seul programme peut écouter sur les ports 80 et 443.
Remplir le formulaire
- Domaine :
exemple.fr. Le site doit déjà pointer vers votre serveur (DNS). - Variante www : choisissez quelle adresse est la « vraie » ; l’autre redirige vers elle. Pensez à créer
l’entrée DNS du
wwwaussi. - Type de site :
- Application : un programme qui écoute sur un port. Indiquez son adresse,
127.0.0.1:3000par exemple. C’est le cas d’un conteneur créé avec le générateur docker-compose en mode « Derrière Nginx ou Caddy ». - Statique : des fichiers HTML. Indiquez leur dossier,
/var/www/exemple.fr. - PHP : comme statique, plus la version de PHP.
- Application : un programme qui écoute sur un port. Indiquez son adresse,
- Envoi max : taille maximale d’un fichier envoyé. Montez-la pour un cloud ou une galerie photo.
Les options
| Option | Recommandation |
|---|---|
| HTTPS (Let’s Encrypt) | Toujours, sauf test en local |
| HSTS | Oui, une fois que le HTTPS marche : le navigateur refusera ensuite le HTTP pendant un an |
| En-têtes de sécurité | Oui |
| Compression | Oui |
| Cache des fichiers statiques | Oui pour un site statique |
| WebSockets | Seulement si l’application en utilise (chat, temps réel, Uptime Kuma…) |
| Nginx ancien | Si nginx -v affiche une version antérieure à 1.25 (Ubuntu 24.04, Debian 12) |
Installer avec Nginx
L’onglet Installation donne les commandes exactes pour votre domaine. Dans l’ordre :
sudo apt install -y nginx certbot python3-certbot-nginx
sudo certbot certonly --nginx -d exemple.fr -d www.exemple.fr --deploy-hook "systemctl reload nginx"
sudo nano /etc/nginx/sites-available/exemple.fr # collez la configuration
sudo ln -s /etc/nginx/sites-available/exemple.fr /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
- Le certificat est obtenu avant d’installer la configuration, qui en a besoin.
nginx -tvérifie la syntaxe : s’il affiche une erreur, rien n’est rechargé et l’ancien site continue de tourner.- Le renouvellement est automatique (Certbot installe sa propre tâche planifiée), et
--deploy-hookrecharge Nginx à chaque renouvellement.
Installer avec Caddy
sudo apt install -y caddy
sudo nano /etc/caddy/Caddyfile # remplacez tout par la configuration
caddy validate --config /etc/caddy/Caddyfile --adapter caddyfile
sudo systemctl reload caddy
Le certificat est demandé au premier rechargement, en quelques secondes. Pour plusieurs sites, mettez leurs blocs les uns à la suite des autres dans le même Caddyfile.
Vérifier
curl -sI https://exemple.fr | head -5 # doit afficher HTTP/2 200 (ou 301 pour la variante www)
curl -sI http://exemple.fr | grep -i location # doit rediriger vers https://
Pour un site statique, n’oubliez pas les droits : le serveur web doit pouvoir lire les fichiers.
sudo chown -R www-data:www-data /var/www/exemple.fr # Nginx
Problèmes fréquents
- Le certificat ne s’obtient pas : DNS pas encore propagé, ou port 80 fermé (décodeur : connexion refusée).
- « conflicting server name » : le domaine est déclaré deux fois (décodeur).
- 502 Bad Gateway : l’application ne répond pas à l’adresse indiquée (décodeur).
- Le port 80 est déjà pris : Docker (Traefik ou Caddy en conteneur) occupe déjà 80/443. Dans ce cas, ne passez pas par Nginx système : utilisez le générateur docker-compose avec l’option Traefik ou Caddy.
Une commande qui ne marche pas, une explication pas claire ? Signaler une erreur dans cette page.