🌐 Installer Nginx avec certificat SSL (Certbot)
Ce guide vous apprendra à installer Nginx, configurer un site web et obtenir un certificat SSL gratuit avec Certbot pour sécuriser votre site avec HTTPS.
📋 Prérequis
- Un serveur VPS avec accès root ou sudo
- Un nom de domaine pointant vers l'IP de votre serveur (exemple :
monsite.com) - Les ports 80 (HTTP) et 443 (HTTPS) ouverts dans votre pare-feu
💡 Recommandation d'infrastructure
Nginx et Certbot fonctionnent parfaitement sur nos VPS NVMe qui offrent des performances de disque exceptionnelles pour servir vos sites web rapidement. Les disques NVMe garantissent des temps de réponse optimaux pour vos visiteurs.
🚀 Étape 1 : Installer Nginx
Mise à jour des paquets
sudo apt update
Installation de Nginx
sudo apt install nginx -y
Vérifier l'installation
# Vérifier que Nginx est installé nginx -v # Vérifier que Nginx est démarré sudo systemctl status nginx
Si tout est correct, vous devriez voir active (running).
Autoriser Nginx dans le pare-feu (UFW)
# Autoriser HTTP (port 80) sudo ufw allow 'Nginx HTTP' # Autoriser HTTPS (port 443) sudo ufw allow 'Nginx HTTPS' # Vérifier les règles sudo ufw status
Tester Nginx
Ouvrez votre navigateur et allez à :
http://votre-ip-serveurouhttp://votre-domaine.com
Vous devriez voir la page par défaut de Nginx qui confirme que l'installation fonctionne !
📝 Étape 2 : Configurer votre site web
Créer le dossier pour votre site
# Créer le dossier (remplacez monsite.com par votre domaine) sudo mkdir -p /var/www/monsite.com # Donner les permissions sudo chown -R $USER:$USER /var/www/monsite.com sudo chmod -R 755 /var/www/monsite.com
Créer une page HTML simple
# Créer la page d'index nano /var/www/monsite.com/index.html
Ajoutez ce contenu simple :
<!DOCTYPE html> <html lang="fr"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Mon Site Web</title> </head> <body> <h1>Bienvenue sur mon site !</h1> <p>Votre site web fonctionne correctement avec Nginx.</p> </body> </html>
Sauvegardez avec Ctrl + X, puis Y, puis Entrée.
Créer la configuration Nginx
# Créer le fichier de configuration sudo nano /etc/nginx/sites-available/monsite.com
Ajoutez cette configuration :
server { listen 80; listen [::]:80; server_name monsite.com www.monsite.com; root /var/www/monsite.com; index index.html; location / { try_files $uri $uri/ =404; } }
Important : Remplacez monsite.com par votre vrai nom de domaine dans toutes les occurrences.
Sauvegardez le fichier.
Activer le site
# Créer un lien symbolique pour activer le site sudo ln -s /etc/nginx/sites-available/monsite.com /etc/nginx/sites-enabled/ # Vérifier la configuration Nginx sudo nginx -t
Si vous voyez syntax is ok et test is successful, c'est bon !
Supprimer le site par défaut (optionnel)
# Supprimer le site par défaut sudo rm /etc/nginx/sites-enabled/default # Recharger Nginx sudo systemctl reload nginx
Tester votre site
Ouvrez votre navigateur et allez à http://votre-domaine.com. Vous devriez voir votre page HTML !
🔒 Étape 3 : Installer Certbot et obtenir un certificat SSL
Certbot est un outil qui permet d'obtenir automatiquement des certificats SSL gratuits de Let's Encrypt.
Installation de Certbot
# Installer Certbot et le plugin Nginx sudo apt install certbot python3-certbot-nginx -y
Obtenir un certificat SSL
# Obtenir un certificat SSL pour votre domaine sudo certbot --nginx -d monsite.com -d www.monsite.com
Important : Remplacez monsite.com par votre vrai domaine.
Certbot va vous poser quelques questions :
- Email : Entrez votre adresse email (pour les notifications de renouvellement)
- Conditions d'utilisation : Acceptez avec
A(Agree) - Partager l'email : Choisissez
Y(Yes) ouN(No) selon votre préférence - Redirection HTTP vers HTTPS : Choisissez
2(Redirection automatique recommandée)
Vérifier le certificat
# Vérifier que le certificat a été créé sudo certbot certificates
Vous devriez voir votre certificat listé avec les dates d'expiration.
Tester votre site HTTPS
Ouvrez votre navigateur et allez à https://votre-domaine.com.
Vous devriez voir :
- Un cadenas vert 🔒 dans la barre d'adresse
- Votre site chargé en HTTPS (sécurisé)
Félicitations ! Votre site est maintenant sécurisé avec SSL !
🔄 Étape 4 : Renouvellement automatique du certificat
Les certificats Let's Encrypt expirent après 90 jours. Certbot peut les renouveler automatiquement.
Test du renouvellement automatique
# Tester le renouvellement automatique sudo certbot renew --dry-run
Si vous voyez The dry run was successful, le renouvellement automatique fonctionne !
Vérifier le service de renouvellement
Certbot crée automatiquement un timer systemd pour renouveler les certificats. Vérifiez-le :
# Vérifier le timer sudo systemctl status certbot.timer # Si le timer n'est pas actif, l'activer sudo systemctl enable certbot.timer sudo systemctl start certbot.timer
Le certificat sera automatiquement renouvelé avant expiration.
📁 Structure de vos fichiers
Voici où se trouvent les fichiers importants :
/var/www/monsite.com/ # Fichiers de votre site web
/etc/nginx/ # Configuration Nginx
/etc/nginx/sites-available/ # Sites disponibles
/etc/nginx/sites-enabled/ # Sites actifs
/etc/letsencrypt/ # Certificats SSL
✅ Vérification finale
Vérifier que Nginx fonctionne
# Statut du service sudo systemctl status nginx # Tester la configuration sudo nginx -t
Vérifier que le SSL fonctionne
# Voir les certificats sudo certbot certificates # Vérifier la date d'expiration sudo certbot certificates | grep "Expiry"
Tester votre site
- Accédez à
https://votre-domaine.com - Vérifiez le cadenas vert dans le navigateur
- Cliquez sur le cadenas pour voir les détails du certificat
🛠️ Commandes utiles
Gestion de Nginx
# Démarrer Nginx sudo systemctl start nginx # Arrêter Nginx sudo systemctl stop nginx # Redémarrer Nginx sudo systemctl restart nginx # Recharger Nginx (sans interruption) sudo systemctl reload nginx # Tester la configuration sudo nginx -t
Gestion des certificats SSL
# Renouveler manuellement tous les certificats sudo certbot renew # Renouveler un certificat spécifique sudo certbot renew --cert-name monsite.com # Voir tous les certificats sudo certbot certificates # Supprimer un certificat sudo certbot delete --cert-name monsite.com
Voir les logs
# Logs Nginx sudo tail -f /var/log/nginx/error.log sudo tail -f /var/log/nginx/access.log # Logs Certbot sudo tail -f /var/log/letsencrypt/letsencrypt.log
🆘 Dépannage
Nginx ne démarre pas
# Vérifier les erreurs de configuration sudo nginx -t # Voir les logs d'erreur sudo journalctl -u nginx -n 50
Le certificat SSL ne s'installe pas
Problème : Certbot ne peut pas vérifier votre domaine.
Solutions :
-
Vérifiez que votre domaine pointe bien vers l'IP du serveur :
dig monsite.com -
Vérifiez que les ports 80 et 443 sont ouverts :
sudo ufw status -
Vérifiez que Nginx écoute sur le port 80 :
sudo netstat -tlnp | grep nginx -
Assurez-vous que votre configuration Nginx utilise bien le bon
server_name
Le site ne charge pas en HTTPS
-
Vérifiez que le certificat existe :
sudo certbot certificates -
Vérifiez la configuration Nginx :
sudo nginx -t sudo cat /etc/nginx/sites-enabled/monsite.com -
Assurez-vous que le pare-feu autorise le port 443 :
sudo ufw allow 443/tcp
Erreur 502 Bad Gateway
Cette erreur signifie que Nginx ne peut pas communiquer avec votre application.
# Vérifier les logs Nginx sudo tail -f /var/log/nginx/error.log # Vérifier que votre application fonctionne sudo systemctl status votre-application
📚 Ressources supplémentaires
❓ Questions fréquentes
Q : Dois-je payer pour un certificat SSL ?
R : Non ! Certbot utilise Let's Encrypt qui offre des certificats SSL gratuits.
Q : Mon certificat expire-t-il ?
R : Oui, après 90 jours, mais Certbot le renouvelle automatiquement.
Q : Puis-je avoir plusieurs sites sur le même serveur ?
R : Oui ! Créez un fichier de configuration pour chaque site dans /etc/nginx/sites-available/.
Q : Comment ajouter un sous-domaine ?
R : Créez une nouvelle configuration Nginx et obtenez un certificat avec sudo certbot --nginx -d sous-domaine.monsite.com.
Q : Que faire si j'ai oublié de renouveler mon certificat ?
R : Certbot le renouvelle automatiquement. Vous pouvez aussi faire sudo certbot renew manuellement.
Votre site web est maintenant sécurisé avec HTTPS ! 🚀🔒