Comment faire une redirection avec Nginx ?

Aujourd’hui un des serveurs HTTP le plus utilisé est Nginx, qui a été conçu  pour répondre au problème C10K où le but est d’être capable de répondre à plus de 10 000 requêtes simultanées. Nginx est donc le server http le plus performant lors d’une montée en charge important avec un système de worker. Là ou apache crée un processus par connexion, Nginx lance une série de workers qui vont chacun être capable de gérer de multiples connexions d’une manière non bloquante. Rue de l’info vous explique ci-dessous en détails, la méthode pour effectuer une redirection Nginx.

Redirection Nginx simple : (d’une page à une autre)

server { listen 80; server_name www.domaine.com; rewrite ^/page.html$ http://www.domaine.com/autre-page.html permanent; }

Le mot clé “permanent” signifie que la redirection sera de type 301, alors que “redirect” signifie qu’elle sera de type 302 donc temporaire.

Redirection d’un groupe d’URL

rewrite ^/liste/article-.*.html$ http://www.domaine.com/blog/article-$1.html permanent;

Dans cette exemple j’utilise les expressions régulières, redirige un groupe d’URL avec une syntaxe commune.

Redirection d’une URL avec paramètres vers une URL sans paramètre

location ~ /demo.html { if ($args ~ limit=50){ rewrite ^ http://www.domaine.com/articles.html? permanent; } }

Dans ce cas, j’ai une URL avec un paramètre limite égale à 50, ce paramètre ne set plus je voudrais donc m’en débarrasser.

Le point d’interrogation à la fin de l’URL rewrite permet de dire à Nginx de ne pas ajouter les paramètres derrière l’URL.

La variable “args” définit les paramètres. Location permet de définir le pattern d’URL concernés par le rewrite. Le ~ introduit une expression régulière (sensible à la casse).

.

Redirection d’une URL si un paramètre existe

location ~ /demo.html { if ($arg_article != "") { rewrite ^ http://www.domaine.com/articles.html? permanent; } }

Ici je redirige les URL finissants par /demo.html ayant au moins un paramètre, peu importe la valeur, vers une URL sans paramètre

location ~ /demo.html { if ($arg_article != ""){ rewrite ^ http://www.domaine.com/article/$arg_article? permanent; } }

Ici je  fais la même chose en récupérant le paramètre article et en le plaçant comme Slug dans la nouvelle URL

Redirection vers le sous-domaine www

server { listen 80; server_name domaine.com; rewrite ^/(.*) http://www.domaine.com/$1 permanent; }

Ici je redirige toutes les URL de domaine.com vers www.domaine.com

Redirection ou code serveur spécifique en fonction du user-agent

location ~ (wp-admin|wp-login.php) { if ($http_user_agent ~* "(bingbot|googlebot)") { return 403; break; } }

Dans ce cas j’ai besoin de bloquer le Crawl de Google et Bing pour certaines pages. Pour cela on vérifie le user agent qui se présente. J’envoie donc un forbidden sur une page que Googlebot ou Bingbot. L’utilisation de “break” indique que le serveur ne doit appliquer les directives qu’à l’intérieur du bloc défini par “location”. A l’inverse avec “last”, le serveur recherche une URL qui pourrait matcher avec le pattern dans tous les blocs “location”.

Redirection en fonction d’un code serveur

error_page 500 502 503 504 /50x.html;

Vérification et redémarrage

Une fois toutes vos modifications effectuées il ne faut pas oublier de recharger la configuration en redémarrant Nginx.

# Pour tester la configuration sudo nginx -t # Pour recharger la configuration sudo service nginx restart

Si vous avez des questions sur la redirection Nginx, propositions ou astuces qui pourraient aider à faire grandir le partage d’informations, n’hésitez pas à nous contacter !

Recent Posts

Masters 2025 : Zach Johnson triomphe, le classement complet et les surprises du tournoi !

Zach Johnson décroche la victoire au Masters 2025 ! Le Masters 2025 a vu Zach…

8 heures ago

Audrey Baconnais-Rosez, Nouvelle Sous-Préfète de Dieppe, Explore les Richesses du Bray-Eawy

Immersion au Cœur du Bray-Eawy : La Sous-Préfète de Dieppe Part à la Découverte du…

15 heures ago

Mavericks vs Lakers (25 Février 2025) : Résumé du match et moments forts

Le choc Mavericks-Lakers du 25 février 2025 : un match à revivre !Le 25 février…

16 heures ago

Cannes 2025 : Sandrine Rousseau appelle à une révolution des mentalités face aux violences sexuelles dans le cinéma

Sandrine Rousseau interpelle Cannes sur les violences sexuelles La députée écologiste Sandrine Rousseau, figure engagée…

22 heures ago

Guerre commerciale : Trump frappe fort avec de nouveaux tarifs douaniers !

Des tarifs douaniers qui secouent l'économie mondiale L'administration Trump a mis le feu aux poudres…

1 jour ago

Declan Rice : L’ascension fulgurante d’une étoile du football anglais

Declan Rice : Plus qu'un simple milieu de terrain Né le 14 janvier 1999, Declan…

1 jour ago