Guide pas à pas pour installer Nginx sur Debian 12, gérer le service systemd, créer un hôte virtuel et activer HTTPS avec Let’s Encrypt. Destiné aux clients Boxis et administrateurs système.
Installer et configurer Nginx sur Debian 12 (Bookworm)
Dernière mise à jour : mars 2026
Temps de lecture : ~12 minutes
Public : administrateurs système et utilisateurs avancés gérant un serveur Debian 12.
Nginx est un serveur HTTP haute performance et un reverse proxy. Sous Debian 12 (Bookworm), il s’intègre bien à systemd et convient devant PHP, Node.js ou des API en amont. Ce guide vous fait installer proprement, sécuriser un minimum, créer un hôte virtuel et, si vous le souhaitez, activer TLS avec Let’s Encrypt.
Ce que vous obtiendrez
- Installation de Nginx depuis les dépôts Debian et vérification du service.
- Ouverture des ports HTTP/HTTPS (exemple avec UFW).
- Racine web dédiée et bloc
serverminimal. - Option : certificat Let’s Encrypt et renouvellement automatique.
Prérequis
- Machine sous Debian 12 avec accès SSH.
- Compte utilisateur avec droits
sudo(éviter le travail quotidien enroot). - Nom DNS (ex.
app.example.com) pointant vers l’IP publique du serveur si vous visez HTTPS et le renouvellement automatique. - Notions de base en ligne de commande.
Note Boxis : sur une offre hébergée ou managée par Boxis, les modifications au niveau serveur peuvent être restreintes ; ouvrez un ticket avant toute intervention sur la pile web mutualisée.
1. Mise à jour des paquets et installation de Nginx
sudo apt update
sudo apt install -y nginx
Debian fournit une version éprouvée de Nginx ; sauf besoin de module spécifique, évitez les dépôts tiers.
2. Pare-feu : autoriser HTTP et HTTPS (UFW)
Si UFW est actif :
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw reload
sudo ufw status
Avec nftables ou un groupe de sécurité cloud, ouvrez TCP 80 et TCP 443 au niveau approprié.
3. Gérer Nginx avec systemd
| Action | Commande |
|---|---|
| Activer au démarrage | sudo systemctl enable nginx |
| Démarrer | sudo systemctl start nginx |
| État | sudo systemctl status nginx |
| Recharger la config | sudo systemctl reload nginx |
| Tester la config | sudo nginx -t |
Après chaque modification de fichier de configuration, exécutez nginx -t avant de recharger.
4. Emplacement des fichiers de configuration
Sur Debian, on retrouve généralement :
- Fichier principal :
/etc/nginx/nginx.conf - Sites :
/etc/nginx/sites-available/(liens danssites-enabled/) - Extra :
/etc/nginx/conf.d/*.conf
Préférez sites-available / sites-enabled pour activer ou désactiver un site sans supprimer les fichiers.
5. Créer un hôte virtuel (bloc server)
Exemple : domaine app.example.com, fichiers dans /var/www/app.example.com/html.
5.1 Répertoires et page de test
sudo mkdir -p /var/www/app.example.com/html
echo '<!DOCTYPE html><html><head><meta charset="utf-8"><title>OK</title></head><body><h1>It works</h1></body></html>' | sudo tee /var/www/app.example.com/html/index.html
sudo chown -R www-data:www-data /var/www/app.example.com
5.2 Fichier de configuration
Créez /etc/nginx/sites-available/app.example.com.conf :
server {
listen 80;
listen [::]:80;
server_name app.example.com;
root /var/www/app.example.com/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
Activez le site (et désactivez le site par défaut si inutile) :
sudo ln -sf /etc/nginx/sites-available/app.example.com.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
Testez avec un navigateur ou curl -I http://app.example.com.
6. Sécuriser HTTPS avec Let’s Encrypt
sudo apt install -y certbot python3-certbot-nginx
Obtenir un certificat (adaptez l’e-mail et le domaine) :
sudo certbot --nginx -d app.example.com -m vous@example.com --agree-tos --non-interactive
Vérifiez le renouvellement :
sudo certbot renew --dry-run
Le renouvellement est en général géré par un timer systemd ou une tâche cron ; vérifiez avec systemctl list-timers | grep certbot.
7. Bonnes pratiques
- Préférer
reloadàrestartaprès simple changement de config. - Séparer les journaux par site si le trafic est important (
access_log/error_log). - Masquer la version du serveur si la politique le permet :
server_tokens off;. - En PHP ou application :
fastcgi_passvers PHP-FPM ouproxy_passvers un upstream cohérent. - Sauvegarder
/etc/nginx/avant les grosses modifications.
8. Dépannage rapide
| Symptôme | Pistes |
|---|---|
502 Bad Gateway |
Application en panne ; mauvais proxy_pass / fastcgi_pass. |
403 Forbidden |
Droits sur les répertoires ; chemin root ; SELinux/AppArmor. |
| Config refusée | sudo nginx -t et corriger les lignes indiquées. |
| Échec de renouvellement certificat | DNS toujours pointé vers ce serveur ; port 80 joignable (HTTP-01). |
9. Synthèse
Vous avez installé Nginx sur Debian 12, ouvert les ports web, créé un hôte virtuel et, en option, activé HTTPS avec Certbot. En production, affinez journaux, limites de débit et surveillance des services en amont.
Sujets liés
- Recherche dans la base de connaissances Boxis :
/{lang}/knowledgebase/search/ - Hébergement et DNS : catégorie Hébergement & domaines lorsqu’elle est disponible.
Article fourni à titre indicatif ; les commandes peuvent varier selon l’image système et vos personnalisations.