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
Note : Si vous n'avez pas encore de domaine, vous pouvez tester avec l'IP, mais Certbot nécessite un domaine pour les certificats SSL.
💡 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
Bashsudo apt update
Installation de Nginx
Bashsudo apt install nginx -y
Vérifier l'installation
Bash1# Vérifier que Nginx est installé 2nginx -v 3 4# Vérifier que Nginx est démarré 5sudo systemctl status nginx
Si tout est correct, vous devriez voir active (running).
Autoriser Nginx dans le pare-feu (UFW)
Bash1# Autoriser HTTP (port 80) 2sudo ufw allow 'Nginx HTTP' 3 4# Autoriser HTTPS (port 443) 5sudo ufw allow 'Nginx HTTPS' 6 7# Vérifier les règles 8sudo 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
Bash1# Créer le dossier (remplacez monsite.com par votre domaine) 2sudo mkdir -p /var/www/monsite.com 3 4# Donner les permissions 5sudo chown -R $USER:$USER /var/www/monsite.com 6sudo chmod -R 755 /var/www/monsite.com
Créer une page HTML simple
Bash# Créer la page d'index nano /var/www/monsite.com/index.html
Ajoutez ce contenu simple :
HTML1<!DOCTYPE html> 2<html lang="fr"> 3<head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 <title>Mon Site Web</title> 7</head> 8<body> 9 <h1>Bienvenue sur mon site !</h1> 10 <p>Votre site web fonctionne correctement avec Nginx.</p> 11</body> 12</html>
Sauvegardez avec Ctrl + X, puis Y, puis Entrée.
Créer la configuration Nginx
Bash# Créer le fichier de configuration sudo nano /etc/nginx/sites-available/monsite.com
Ajoutez cette configuration :
Nginx1server { 2 listen 80; 3 listen [::]:80; 4 5 server_name monsite.com www.monsite.com; 6 7 root /var/www/monsite.com; 8 index index.html; 9 10 location / { 11 try_files $uri $uri/ =404; 12 } 13}
Important : Remplacez monsite.com par votre vrai nom de domaine dans toutes les occurrences.
Sauvegardez le fichier.
Activer le site
Bash1# Créer un lien symbolique pour activer le site 2sudo ln -s /etc/nginx/sites-available/monsite.com /etc/nginx/sites-enabled/ 3 4# Vérifier la configuration Nginx 5sudo nginx -t
Si vous voyez syntax is ok et test is successful, c'est bon !
Supprimer le site par défaut (optionnel)
Bash1# Supprimer le site par défaut 2sudo rm /etc/nginx/sites-enabled/default 3 4# Recharger Nginx 5sudo 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
Bash# Installer Certbot et le plugin Nginx sudo apt install certbot python3-certbot-nginx -y
Obtenir un certificat SSL
Bash# 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
Bash# 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
Bash# 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 :
Bash1# Vérifier le timer 2sudo systemctl status certbot.timer 3 4# Si le timer n'est pas actif, l'activer 5sudo systemctl enable certbot.timer 6sudo 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
Bash1# Statut du service 2sudo systemctl status nginx 3 4# Tester la configuration 5sudo nginx -t
Vérifier que le SSL fonctionne
Bash1# Voir les certificats 2sudo certbot certificates 3 4# Vérifier la date d'expiration 5sudo 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
Bash1# Démarrer Nginx 2sudo systemctl start nginx 3 4# Arrêter Nginx 5sudo systemctl stop nginx 6 7# Redémarrer Nginx 8sudo systemctl restart nginx 9 10# Recharger Nginx (sans interruption) 11sudo systemctl reload nginx 12 13# Tester la configuration 14sudo nginx -t
Gestion des certificats SSL
Bash1# Renouveler manuellement tous les certificats 2sudo certbot renew 3 4# Renouveler un certificat spécifique 5sudo certbot renew --cert-name monsite.com 6 7# Voir tous les certificats 8sudo certbot certificates 9 10# Supprimer un certificat 11sudo certbot delete --cert-name monsite.com
Voir les logs
Bash1# Logs Nginx 2sudo tail -f /var/log/nginx/error.log 3sudo tail -f /var/log/nginx/access.log 4 5# Logs Certbot 6sudo tail -f /var/log/letsencrypt/letsencrypt.log
🆘 Dépannage
Nginx ne démarre pas
Bash1# Vérifier les erreurs de configuration 2sudo nginx -t 3 4# Voir les logs d'erreur 5sudo 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 :
Bashdig monsite.com -
Vérifiez que les ports 80 et 443 sont ouverts :
Bashsudo ufw status -
Vérifiez que Nginx écoute sur le port 80 :
Bashsudo 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 :
Bashsudo certbot certificates -
Vérifiez la configuration Nginx :
Bashsudo nginx -t sudo cat /etc/nginx/sites-enabled/monsite.com -
Assurez-vous que le pare-feu autorise le port 443 :
Bashsudo ufw allow 443/tcp
Erreur 502 Bad Gateway
Cette erreur signifie que Nginx ne peut pas communiquer avec votre application.
Bash1# Vérifier les logs Nginx 2sudo tail -f /var/log/nginx/error.log 3 4# Vérifier que votre application fonctionne 5sudo 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 ! 🚀🔒