Comment faire des redirections sous Nginx ?

Par Laurent LOUIS-THERESEServeur, , , Commentaires désactivés

Nginx (prononcer engine-x) est un puissant serveur web HTTP open source à hautes performances. Il peut fonctionner comme un proxy inverse ou un proxy POP3/IMAP. C’est le troisième serveur web le plus populaire et il est bien connu pour ses performances accrues, sa facilité d’utilisation et de configuration, sa stabilité et son utilisation minimale des ressources. C’est pourquoi, dans cet article, je vais vous montrer comment utiliser Nginx pour rediriger le trafic de différentes manières.

Selon de nombreuses études Nginx détient environ 32% de parts de marché sur le marché des serveurs web. Il fait tourner de nombreux sites internet de renom tels que Github, Netflix, CloudFlare, Hulu, Airbnb, Hulu, WordPress et bien d’autres.

Redirection dans Nginx


La possibilité de transférer l’URL du site web vers une autre adresse ou un autre point en fonction de vos critères est une caractéristique essentielle du serveur web Nginx. Une redirection Nginx est simple et facile à mettre en place. Souvent, les utilisateurs choisissent de rediriger une page qui a un bon classement SEO. Par exemple lors du passage d’un CMS à une autre plateforme. Cela changera complètement la composition de votre URL. Ainsi, pour conserver votre page actuelle avec la bonne position SERP, vous pouvez rediriger l’ancienne URL vers la nouvelle page.

Ici, je prendrai pour exemple la création de deux types de redirection Nginx : permanente et temporaire.

Redirection temporaire et permanente de Nginx en détail

Les redirections temporaires sont bénéfiques si l’emplacement d’une page doit changer temporairement d’un endroit à un autre. Le code de réponse de redirection 302 est utilisé pour désigner le déplacement temporaire d’une page.

Si le site web est en cours de maintenance, les redirections temporaires sont utilisées pour informer les utilisateurs que le site web est indisponible. Un autre exemple est lorsque vous effectuez des redirections temporaires d’une page incomplète ; vous reliez cette page à un autre point ou à la page principale :

Visiteur-> Page-> Le site web est en cours de maintenance

D’autre part, une redirection Nginx permanente informe le navigateur web qu’il doit lier en permanence l’ancienne page ou l’ancien domaine à un nouvel emplacement ou à un nouveau domaine. Pour représenter ce changement, le code de réponse 301 de la redirection est utilisé pour désigner le déplacement permanent d’une page. Ce type de redirection est utile lorsque l’utilisateur veut changer le nom de domaine et ne veut plus qu’un navigateur y accède.

Par exemple, lorsque vous souhaitez changer le domaine de votre site web ou créer une nouvelle page pour un ancien site :

Visiteur-> Clique sur www.anciendomaine.fr -> Redirigé vers www. nouveaudomaine.fr

Redirections de pages dans Nginx

Dans Nginx, la plupart des redirections peuvent être réalisées à l’aide de la fonction de réécriture intégrée. C’est la fonctionnalité par défaut qui est disponible sur une installation propre de Nginx et qui peut former les deux types de redirection Nginx – c’est-à-dire permanente et temporaire. Dans sa forme la plus simple, elle prend un minimum de deux cas, c’est-à-dire l’ancienne URL et la nouvelle URL.

Il est simple et facile de rediriger des pages vers un emplacement temporaire ou permanent sur le serveur web Nginx. Dans l’emplacement /etc/nginx/sites-enabled/default, vous devez coller le code suivant, tout en modifiant les variables selon vos besoins :

Location chemin... {        
     rewrite ^/ancienneURL$ https://www.domaine.fr/nouvelleURL redirect; 
}

/!\ si vous utilisez un panel d’administration comme Plesk par exemple, vous aurez la possibilité de rajouter votre redirection directement au sein de votre espace web.

Si vous souhaitez rediriger la page vers un autre lien de façon permanente, utilisez simplement « permanent » au lieu de « rediriger » dans la commande ci-dessus. En attendant, le chemin d’accès est généralement /index.html.

Redirection d’un domaine par Nginx

Pour rediriger un domaine vers un autre, utilisez la commande ci-dessous dans le terminal :

server {
      listen 80;
      hostname site.fr www.site.fr;
      rewrite ^ http://www.site.com$request_uri? permanent;
}

Ici, on utilise deux domaines. Celui que nous voulons rediriger – www.site.fr, et le nouveau – www.site.com.

Redirection Nginx de HTTP vers HTTPS (SSL)

HTTP et HTTPS utilisent des ports différents – HTTP port 80 et HTTPS port 443. L’utilisation du HTTPS est beaucoup plus utile car il vous protège contre les attaques MITM qui peuvent détourner votre session. N’oubliez pas que pour que cette méthode fonctionne, vous devez avoir un SSL déjà configuré. Ainsi, pour protéger toutes les informations envoyées entre vous et vos visiteurs, il est avantageux de rediriger toutes les demandes provenant de HTTP vers HTTPS. Pour cela, on peut ajouter cette modification au même fichier :

server {
listen 80 default_server;
server_name _;
return 301 https://$host$request_uri;
}

Désormais, tout le trafic du serveur HTTP par défaut est redirigé vers le HTTPS.

Redirection de www vers non-www

Il arrive souvent que vous souhaitiez que vos visiteurs accèdent au domaine ordinaire de votre page web, par exemple site.fr au lieu de www.site.fr. Bien qu’il existe de nombreuses options pour rediriger de www à non-www dans Nginx, l’une des façons les plus simples de le faire est décrite ci-dessous :

server {
    server_name www.site.fr;
    return 301 $scheme://site.fr$request_uri;
}

Conclusion


Nginx est l’un des serveurs web les plus puissants et les plus faciles à utiliser, qui vous permet d’effectuer des redirections temporaires et permanentes comme décrit ci-dessus.

Vous savez maintenant comment créer des redirections Nginx de HTTP vers HTTPS, de www ou Non-www ou vice versa. Assurez-vous d’utiliser les bons types de redirection, car des redirections incorrectes affecteront votre classement dans les recherches. Grâce à des redirections précises, vous pouvez tirer parti de votre présence actuelle sur le web tout en modifiant la structure du site selon les besoins.