Comment rediriger HTTP vers HTTPS sur Linux avec Nginx (Guide complet)
Sécuriser votre site web avec HTTPS n’est plus optionnel — c’est une exigence fondamentale pour protéger les données des utilisateurs, maintenir la confiance et obtenir un classement SEO solide. Les moteurs de recherche comme Google pénalisent activement les sites HTTP non chiffrés, tandis que les navigateurs modernes les signalent comme « Non sécurisé ». Rediriger tout le trafic HTTP vers HTTPS garantit que chaque visiteur accède à la version chiffrée de votre site automatiquement, sans aucune intervention manuelle.
Ce guide complet vous guide tout au long du processus : comprendre la différence entre HTTP et HTTPS, installer un certificat SSL gratuit via Let’s Encrypt, configurer une redirection permanente 301 dans Nginx et vérifier que tout fonctionne correctement sur votre serveur Linux.
Table des matières
- HTTP vs. HTTPS : Quelle est la différence ?
- Prérequis
- Étape 1 : Installer un certificat SSL avec Let’s Encrypt
- Étape 2 : Configurer Nginx pour rediriger HTTP vers HTTPS
- Étape 3 : Tester votre configuration Nginx
- Étape 4 : Recharger Nginx pour appliquer les modifications
- Étape 5 : Vérifier que la redirection fonctionne
- Problèmes courants et dépannage
- Conclusion
1. HTTP vs. HTTPS : Quelle est la différence ? {#http-vs-https}
Avant de plonger dans la configuration, il est important de comprendre pourquoi cette redirection est importante.
HTTP (Hypertext Transfer Protocol)
HTTP est le protocole fondamental utilisé pour transmettre des données entre un navigateur web et un serveur. Cependant, il transmet toutes les données en texte brut, ce qui signifie que toute information — identifiants de connexion, détails de paiement, données personnelles — peut être interceptée par des attaquants utilisant une attaque man-in-the-middle (MITM). HTTP n’offre aucune garantie de chiffrement, d’authentification ou d’intégrité des données.
HTTPS (HTTP Secure)
HTTPS est l’extension sécurisée de HTTP. Il enveloppe le protocole HTTP standard dans un chiffrement SSL/TLS, créant un tunnel chiffré entre le client et le serveur. Cela garantit :
- Confidentialité — Les données ne peuvent pas être lues par des tiers en transit.
- Intégrité — Les données ne peuvent pas être altérées pendant la transmission.
- Authentification — Les utilisateurs peuvent vérifier qu’ils communiquent avec le serveur légitime.
- Avantage SEO — Google utilise HTTPS comme signal de classement, donnant aux sites sécurisés un avantage mesurable.
- Confiance du navigateur — Chrome, Firefox et Edge affichent une icône de cadenas pour les sites HTTPS et un avertissement « Non sécurisé » pour les sites HTTP.
En résumé : exploiter un site web sans HTTPS dans l’environnement actuel est un risque sérieux pour la sécurité et les affaires.
2. Prérequis {#prerequisites}
Avant de suivre ce guide, assurez-vous d’avoir les éléments suivants en place :
- Un serveur Linux (Ubuntu 20.04/22.04, Debian 11/12 ou similaire) exécutant Nginx
- Un nom de domaine enregistré pointant vers l’adresse IP de votre serveur
- Accès root ou
sudoà votre serveur - Une familiarité de base avec la ligne de commande Linux
Si vous recherchez un environnement serveur fiable pour héberger votre site web, VPS Hosting d’AlexHost offre des plans VPS Linux entièrement gérés et non gérés optimisés pour les applications web, avec stockage SSD et réseau haute disponibilité.
Vous aurez également besoin d’un certificat SSL valide. Ce guide utilise le certificat gratuit Let’s Encrypt via Certbot. Si vous avez besoin d’un certificat de validation étendue (EV) ou validé par l’organisation (OV) pour un usage professionnel, envisagez d’explorer Certificats SSL d’AlexHost.
3. Étape 1 : Installer un certificat SSL avec Let’s Encrypt {#install-ssl}
Let’s Encrypt est une autorité de certification gratuite, automatisée et ouverte. Certbot est le client officiel qui automatise le processus d’obtention et de renouvellement des certificats SSL/TLS auprès de Let’s Encrypt et configure votre serveur web.
Installer Certbot et le plugin Nginx
Mettez à jour votre index de paquets et installez Certbot ainsi que le plugin Nginx :
sudo apt update
sudo apt install certbot python3-certbot-nginx -yObtenir et installer votre certificat SSL
Exécutez Certbot avec l’indicateur --nginx pour obtenir automatiquement un certificat et configurer Nginx pour l’utiliser :
sudo certbot --nginx -d example.com -d www.example.comRemplacez example.com par votre nom de domaine réel. Certbot va :
- Vérifier la propriété du domaine via un défi ACME
- Obtenir un certificat signé auprès de Let’s Encrypt
- Modifier automatiquement votre configuration Nginx pour activer HTTPS sur le port 443
- Configurer optionnellement une redirection automatique HTTP vers HTTPS (vous pouvez ignorer cette étape dans Certbot et la configurer manuellement comme indiqué ci-dessous pour un contrôle total)
Activer le renouvellement automatique du certificat
Les certificats Let’s Encrypt expirent tous les 90 jours. Certbot installe un minuteur systemd ou une tâche cron pour gérer les renouvellements automatiquement. Vérifiez qu’il est actif :
sudo systemctl status certbot.timerVous pouvez également effectuer un test de renouvellement à sec :
sudo certbot renew --dry-run4. Étape 2 : Configurer Nginx pour rediriger HTTP vers HTTPS {#configure-nginx}
Avec votre certificat SSL installé, vous devez maintenant configurer Nginx pour rediriger de manière permanente tout le trafic HTTP (port 80) vers HTTPS (port 443). Ceci est fait en utilisant une redirection 301 Moved Permanently, qui est le type de redirection correct pour le SEO — il transfère l’équité des liens vers la version HTTPS de vos pages.
Ouvrir votre fichier de configuration du bloc serveur Nginx
Les configurations de site Nginx sont généralement stockées dans /etc/nginx/sites-available/. Ouvrez le fichier de configuration pour votre domaine :
sudo nano /etc/nginx/sites-available/example.comConfigurer le bloc de redirection HTTP vers HTTPS
Votre fichier de configuration contiendra un ou plusieurs blocs server. Localisez le bloc qui écoute sur le port 80 (HTTP) et remplacez-le ou mettez-le à jour avec la règle de redirection suivante :
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
# Permanently redirect all HTTP requests to HTTPS
return 301 https://$host$request_uri;
}Votre bloc serveur HTTPS (port 443), que Certbot a probablement configuré automatiquement, devrait ressembler à ceci :
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name example.com www.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
root /var/www/example.com/html;
index index.html index.php;
location / {
try_files $uri $uri/ =404;
}
}> Pourquoi utiliser return 301 au lieu de rewrite ?
> La directive return 301 est plus rapide et plus efficace qu’une règle rewrite. Elle retourne immédiatement la réponse de redirection sans obliger Nginx à traiter des blocs de localisation supplémentaires, réduisant la surcharge du serveur et améliorant le temps de réponse.
Comprendre la directive de redirection
| Composant | Explication |
|---|---|
listen 80 | Nginx écoute les connexions entrantes sur le port HTTP 80 |
listen [::]:80 | Active le support IPv6 sur le port 80 |
server_name | Définit les noms de domaine auxquels ce bloc s’applique |
return 301 | Émet une redirection permanente (meilleure pour le SEO) |
https://$host | Préserve le nom d’hôte original dans la redirection |
$request_uri | Préserve le chemin URI complet et la chaîne de requête |
5. Étape 3 : Tester votre configuration Nginx {#test-nginx}
Ne rechargez jamais ou ne redémarrez jamais Nginx sans tester votre configuration d’abord. Une erreur de syntaxe dans votre fichier de configuration causera l’échec du démarrage de Nginx, mettant votre site web hors ligne.
Exécutez le test de configuration Nginx intégré :
sudo nginx -tUn test réussi produit la sortie suivante :
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successfulSi vous voyez des erreurs, examinez attentivement la sortie. Nginx indiquera le fichier et le numéro de ligne où le problème a été détecté. Les problèmes courants incluent :
- Points-virgules manquants à la fin des directives
- Accolades non fermées
{} - Chemins de fichiers incorrects pour les certificats SSL
- Entrées
server_nameen double
Corrigez les erreurs signalées avant de continuer.
6. Étape 4 : Recharger Nginx pour appliquer les modifications {#reload-nginx}
Une fois le test de configuration réussi, rechargez Nginx pour appliquer vos modifications. L’utilisation de reload au lieu de restart est préférable car elle applique la nouvelle configuration gracieusement sans abandonner les connexions actives :
sudo systemctl reload nginxPour confirmer que Nginx fonctionne correctement après le rechargement :
sudo systemctl status nginxVous devriez voir active (running) dans la sortie.
7. Étape 5 : Vérifier que la redirection fonctionne {#verify-redirect}
Avec Nginx rechargé, il est temps de confirmer que la redirection fonctionne correctement.
Méthode 1 : Test du navigateur
- Ouvrez votre navigateur web.
- Accédez à
http://example.com(en utilisant HTTP, pas HTTPS). - Observez que le navigateur vous redirige automatiquement vers
https://example.com. - Confirmez que l’icône de cadenas apparaît dans la barre d’adresse, indiquant une connexion SSL valide.
Méthode 2 : Test en ligne de commande avec curl
Utilisez curl avec l’indicateur -I pour récupérer uniquement les en-têtes de réponse HTTP sans télécharger le corps de la page :
curl -I http://example.comUne redirection correctement configurée produit la réponse suivante :
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Mon, 01 Jan 2025 12:00:00 GMT
Content-Type: text/html
Location: https://example.com/
Connection: keep-aliveIndicateurs clés à vérifier :
- Code de statut
301 Moved Permanently— Confirme qu’une redirection permanente est en place. Location: https://example.com/— Confirme que le trafic est redirigé vers la version HTTPS.
Méthode 3 : Vérificateur de redirection en ligne
Vous pouvez également utiliser des outils en ligne gratuits tels que redirect-checker.org ou httpstatus.io pour tracer la chaîne de redirection complète et confirmer qu’il n’y a pas de boucles de redirection ou de sauts inutiles.
8. Problèmes courants et dépannage {#troubleshooting}
Boucle de redirection
Symptôme : Le navigateur affiche une erreur « Trop de redirections ».
Cause : Votre bloc serveur HTTPS déclenche également une redirection vers HTTP, créant une boucle infinie.
Correction : Assurez-vous que la directive return 301 existe uniquement dans le bloc serveur HTTP (port 80), pas dans le bloc HTTPS (port 443).
Avertissements de contenu mixte
Symptôme : L’icône de cadenas affiche un avertissement même après que la redirection fonctionne.
Cause : Vos pages HTML font toujours référence à des ressources HTTP (images, scripts, feuilles de style) en utilisant des URL http://.
Correction : Mettez à jour toutes les URL de ressources internes pour utiliser https:// ou des URL relatives au protocole (//). Utilisez un plugin comme Really Simple SSL pour les sites WordPress.
Certificat SSL non trouvé
Symptôme : Nginx ne démarre pas avec une erreur concernant des fichiers de certificat manquants.
Cause : Les chemins spécifiés dans ssl_certificate et ssl_certificate_key ne correspondent pas aux emplacements réels des fichiers de certificat.
Correction : Vérifiez les chemins des certificats avec :
sudo ls /etc/letsencrypt/live/example.com/Le renouvellement de Certbot échoue
Symptôme : Le renouvellement automatique échoue avec une erreur de connexion.
Cause : Le port 80 peut être bloqué par un pare-feu, empêchant le défi HTTP-01 de Let’s Encrypt de se terminer.
Correction : Assurez-vous que le port 80 est ouvert dans votre pare-feu :
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw reload9. Conclusion {#conclusion}
Rediriger HTTP vers HTTPS sur votre serveur Linux en utilisant Nginx est une tâche de configuration simple mais critiquement importante. En implémentant une redirection permanente 301, vous garantissez que chaque visiteur — indépendamment de la façon dont il accède à votre site — est automatiquement servi la version chiffrée et sécurisée. Cela protège les données sensibles des utilisateurs, renforce la confiance des visiteurs, satisfait les exigences de sécurité des navigateurs modernes et offre un avantage SEO mesurable.
Pour récapituler les étapes clés couvertes dans ce guide :
- Installez
