🌐 Installer Nginx avec certificat SSL (Certbot)

Guide complet pour installer Nginx et configurer un certificat SSL gratuit avec Certbot pour mettre en place votre propre site internet sécurisé.

🌐 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-serveur ou
  • http://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 :

  1. Email : Entrez votre adresse email (pour les notifications de renouvellement)
  2. Conditions d'utilisation : Acceptez avec A (Agree)
  3. Partager l'email : Choisissez Y (Yes) ou N (No) selon votre préférence
  4. 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 :

  1. Vérifiez que votre domaine pointe bien vers l'IP du serveur :

    dig monsite.com
  2. Vérifiez que les ports 80 et 443 sont ouverts :

    sudo ufw status
  3. Vérifiez que Nginx écoute sur le port 80 :

    sudo netstat -tlnp | grep nginx
  4. Assurez-vous que votre configuration Nginx utilise bien le bon server_name

Le site ne charge pas en HTTPS

  1. Vérifiez que le certificat existe :

    sudo certbot certificates
  2. Vérifiez la configuration Nginx :

    sudo nginx -t sudo cat /etc/nginx/sites-enabled/monsite.com
  3. 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 ! 🚀🔒