Comment utiliser Nginx pour rediriger tout le trafic de HTTP à HTTPS

Comment utiliser Nginx pour rediriger tout le trafic de HTTP à HTTPS

Si votre site Web est hébergé avec Nginx et qu'il a activé SSL, il est de la meilleure pratique de désactiver complètement HTTP et de forcer tout le trafic entrant vers la version HTTPS du site Web. Cela évite d'avoir du contenu en double et garantit que tous les utilisateurs du site ne font que parcourir la version sécurisée de votre site Web. Vous devriez également voir un boost de référencement, 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 souhaitiez rediriger tout le trafic HTTP vers HTTPS. Même si un utilisateur se trouve à suivre un http: // lien, le site doit les envoyer à la page correcte et sécurisée, ce qui se produit instantanément et sans l'intervention de l'utilisateur.

Il existe deux façons de configurer cette redirection dans Nginx. Une méthode vous permet de configurer la redirection des sites individuels. L'autre méthode peut rediriger HTTP vers HTTP. Nous couvrirons les instructions étape par étape pour les deux méthodes ci-dessous. Commençons.

NOTE
Utilisation d'Apache au lieu de Nginx? Nous avons écrit un guide séparé pour utiliser Apache pour rediriger tout le trafic HTTP vers HTTPS.

Dans ce tutoriel, vous apprendrez:

  • Comment rediriger HTTP vers HTTPS pour les sites Web de Nginx individuels
  • Comment rediriger HTTP vers HTTPS pour tous les sites Web Nginx
Rediriger le trafic HTTP vers HTTPS dans Nginx Exigences logicielles et conventions de ligne de commande Linux
Catégorie Exigences, conventions ou version logicielle utilisée
Système Toute distribution Linux
Logiciel Nginx
Autre Accès privilégié à votre système Linux en tant que racine ou via le Sudo commande.
Conventions # - Exige que les commandes Linux soient exécutées avec des privilèges racine soit directement en tant qu'utilisateur racine, soit par l'utilisation de Sudo commande
$ - Exige que les commandes Linux soient exécutées en tant qu'utilisateur non privilégié régulier

Rediriger HTTP vers HTTPS pour les sites individuels



Nous devons 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-disponible / your_conf_file 

Il devrait y avoir au moins deux blocs dans ce fichier - celui qui contrôle la configuration des connexions HTTP (port 80) et une qui contrôle HTTPS (port 443). Dans le cadre de 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 écouter 80; Exemple de nom.com www.exemple.com; Retour 301 https: // Exemple.com $ request_uri;  

Comme vous pouvez le voir, le code écoute le port 80 pour les connexions entrantes à exemple.com et www.exemple.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à fait un.

Server écouter 80; Exemple de nom.com www.exemple.com; Retour 301 https: // Exemple.com $ request_uri;  Server écouter 443 SSL; Exemple de nom.com; Exemple SSL_CERTIFATE.com.CRT; SSL_CERTIFICATE_KEY Exemple.com.clé; # Autre configuration 

Mais qu'en est-il des connexions avec https: // www.exemple.com (Remarquez le www.)? Pour rediriger également ces connexions, nous aurons besoin d'un autre bloc avec une redirection 301. En totalité, le fichier de configuration ressemblerait à ceci (bien que le vôtre puisse avoir une configuration supplémentaire):

Server # Redirigez tout HTTP vers HTTPS Listen 80; Exemple de nom.com www.exemple.com; Retour 301 https: // Exemple.com $ request_uri;  serveur # rediriger https www. Écoutez 443 SSL; server_name www.exemple.com; Retour 301 https: // Exemple.com $ request_uri;  Server écouter 443 SSL; Exemple de nom.com; Exemple SSL_CERTIFATE.com.CRT; SSL_CERTIFICATE_KEY Exemple.com.clé; # Autre configuration 


Assurez-vous d'utiliser une commande SystemCTL pour redémarrer ou recharger Nginx pour que ces nouvelles modifications prennent effet.

$ sudo systemctl recharger nginx 

Votre site devrait désormais toujours rediriger vers une URL avec le format de https: // exemple.com, Quel que soit le lien préfacé par http: // et / ou www..

Rediriger HTTP vers HTTPS pour tous les sites

Pour rediriger le trafic pour tous vos sites Web hébergés Nginx, entrez le code suivant dans votre fichier de configuration:

server écouter 80 default_server; écouter [::]: 80 default_server; nom du serveur _; retour 301 https: // $ host $ request_uri;  

C'est à peu près le même que le code ci-dessus, sauf qu'il utilise la variable $ hôte il peut donc être appliqué à toute URL que Nginx héberge. Cette méthode peut être un peu plus pratique, mais vous perdrez une partie du contrôle granulaire que vous avez lorsque chaque site a 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 offrir HTTPS. Il est plus sûr, donne à l'utilisateur la tranquillité d'esprit, et le site obtiendra un petit coup de référence. Dans cet article, nous avons vu à quel point il était facile de rediriger tout le trafic vers HTTPS et de nous débarrasser entièrement de HTTP. L'une de ces méthodes est viable pour forcer le trafic HTTP vers HTTPS sur votre (s) site (s).

Tutoriels Linux connexes:

  • Ubuntu 20.04: WordPress avec l'installation de Nginx
  • Choses à installer sur Ubuntu 20.04
  • Introduction aux moteurs de stockage MySQL
  • Une introduction à l'automatisation Linux, des outils et des techniques
  • Ubuntu 20.04 WordPress avec installation Apache
  • Choses à faire après l'installation d'Ubuntu 20.04 Focal Fossa Linux
  • Masterring Bash Script Loops
  • Choses à installer sur Ubuntu 22.04
  • Mint 20: Mieux que Ubuntu et Microsoft Windows?
  • Ubuntu 20.04 Guide