Comment utiliser Nginx pour rediriger tout le trafic de http vers https
Si votre site Web est hébergé avec NGINX et que SSL est activé, il est recommandé de désactiver complètement HTTP et de forcer tout le trafic entrant à passer à la version HTTPS du site Web. Cela permet d’éviter d’avoir du contenu dupliqué et de s’assurer que tous les utilisateurs du site ne naviguent que sur la version sécurisée de votre site web. Vous devriez également voir un coup de pouce SEO, car les moteurs de recherche préfèrent les pages Web non redondantes et sécurisées.
Dans ce guide, nous supposerons que vous utilisez déjà NGINX sur un système Linux et que vous souhaitez rediriger tout le trafic HTTP vers HTTPS. Même si un utilisateur suit un lien http://, le site doit l’envoyer vers la page correcte et sécurisée, ce qui se produit instantanément et sans intervention de l’utilisateur.
Il existe deux façons de configurer cette redirection dans NGINX. Une méthode vous permet de configurer la redirection pour des sites individuels. L’autre méthode peut rediriger HTTP vers HTTPS pour tous les sites NGINX de votre serveur, ce qui est pratique si vous avez configuré plusieurs sites et que vous souhaitez éviter d’avoir à appliquer exactement la même redirection à chacun d’eux. Nous couvrirons ci-dessous les instructions étape par étape pour les deux méthodes. Commençons.
Vous utilisez Apache au lieu de NGINX ? Nous avons rédigé un guide distinct sur la façon d’utiliser Apache pour rediriger tout le trafic HTTP vers HTTPS.
Dans ce tutoriel, vous allez apprendre :
- Comment rediriger HTTP vers HTTPS pour des sites Web NGINX individuels
- Comment rediriger HTTP vers HTTPS pour tous les sites Web NGINX
Rediriger le trafic HTTP vers HTTPS dans NGINX
Rediriger HTTP vers HTTPS pour des sites individuels
Nous devrons apporter des modifications au fichier de configuration du serveur NGINX afin de rediriger le trafic. Ouvrez-le avec votre éditeur de texte préféré.
sudo nano /etc/nginx/sites-available/your_conf_file
Il doit y avoir au moins deux blocs dans ce fichier : l’un qui contrôle la configuration des connexions HTTP (port 80) et l’autre qui contrôle HTTPS (port 443). Sous la partie HTTP, insérez le code de redirection 301 suivant. Bien sûr, remplacez l’exemple de domaine par le domaine de votre site.
server {
listen 80;
server_name example.com www.example.com;
return 301 https://example.com$request_uri;
}
Comme vous pouvez le voir, le code écoute sur le port 80 pour les connexions entrantes à example.com et www.example.com. Il redirige ensuite ces connexions vers la même URL, mais avec https://.
Sous le bloc HTTP, vous aurez besoin d’un bloc HTTPS si vous n’en avez pas déjà créé un.
server {
listen 80;
server_name example.com www.example.com;
return 301 https://example.com$request_uri;
}
server {
listen 443 ssl;
server_name example.com;
ssl_certificate example.com.crt;
ssl_certificate_key example.com.key;
# other configuration
}
Mais qu’en est-il des connexions à https://www.example.com (notez le www.) ? Pour rediriger également ces connexions, nous aurons besoin d’un autre bloc avec une redirection 301. Dans son intégralité, le fichier de configuration ressemblerait à ceci (bien que le vôtre puisse avoir une configuration supplémentaire) :
server {
# redirect all HTTP to HTTPS
listen 80;
server_name example.com www.example.com;
return 301 https://example.com$request_uri;
}
server {
# redirect HTTPS www.
listen 443 ssl;
server_name www.example.com;
return 301 https://example.com$request_uri;
}
server {
listen 443 ssl;
server_name example.com;
ssl_certificate example.com.crt;
ssl_certificate_key example.com.key;
# other configuration
}
Assurez-vous d’utiliser une commande systemctl pour redémarrer ou recharger NGINX afin que ces nouvelles modifications prennent effet.
sudo systemctl reload nginx
Votre site doit désormais toujours rediriger vers une URL au format https://example.com, que le lien soit précédé de http:// et/ou www..
Rediriger HTTP vers HTTPS pour tous les sites
Pour rediriger le trafic vers tous vos sites Web hébergés par NGINX, entrez le code suivant dans votre fichier de configuration :
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
return 301 https://$host$request_uri;
}
C’est à peu près le même que le code ci-dessus, sauf qu’il utilise la variable $host afin qu’il puisse être appliqué à n’importe quelle URL hébergée par NGINX. Cette méthode peut être un peu plus pratique, mais vous perdrez une partie du contrôle granulaire dont vous disposez lorsque chaque site dispose de ses propres blocs de serveur. Utilisez votre propre discrétion et choisissez la méthode que vous aimez.
Conclusion
Dans la grande majorité des cas, il n’y a aucune raison de continuer à utiliser HTTP lorsque votre site peut proposer HTTPS. C’est plus sûr, donne à l’utilisateur la tranquillité d’esprit et le site recevra un petit coup de pouce SEO. Dans cet article, nous avons vu à quel point il était facile de rediriger tout le trafic vers HTTPS et de se débarrasser complètement de HTTP. L’une ou l’autre de ces méthodes est viable pour forcer le trafic HTTP vers HTTPS sur votre ou vos sites Web.
