Les guerres d'un Responsable Informatique

Vous êtes passionnés comme moi de machines basse-consommation, ARM, Atom : rendez visite à mon partenaire !

Rewrite rules Nginx

vendredi 04 février 2011 à 07:15 | Dev
url redirect nginx

J'utilise le serveur web Nginx, après avoir utilisé Apache2 pendant des années. Je l'ai déployé sur ce blog, au bureau avec mon équipe, en DMZ et sur l'intranet. Les points les plus problématiques, quand on commence avec nginx, sont l'url rewrite et l'url redirect. La syntaxe de la réécriture d'url dans Nginx est différente de celle d'Apache2.

reecriture d'url avec nginx

Je vous présente dans ce qui suit, plusieurs possibilités :

  • le domaine redirect, utilisé lors d'un changement de nom de domaine
  • l'url rewriting, qui va réécrire l'url entré par l'utilisateur pour le serveur, sans modifier l'url dans la zone de saisie.
  • l'url redirect, qui modifie l'url entré par l'utilisateur, en modifie également dans la zone de saisie

server { ############################################### # Redirection de domaine # ici de http://rabah.dyndns.org # vers http://www.it-wars.com ############################################### if ($host ~ "rabah.dyndns.org" ) { rewrite ^(.*) http://www.it-wars.com redirect; break; } ############################################### # Redirection de sous-domaine # ici de http://securite.it-wars.com # vers http://www.it-wars.com/?categorie/secu # avec modification de l'url saisi ############################################### if ( $sub = "securite" ) { rewrite ^(.*) http://www.it-wars.com/?categorie10/secu redirect; break; } ... ############################################### # Redirection d'url # ici, on laisse sitemap.xml dans la zone de # saisi et on envoie sitemap.php ############################################### location ~ sitemap\.xml { rewrite ^/sitemap.xml$ /sitemap.php last; } ############################################### # Redirection d'url # ici, on modifie dans la zone de # saisi et on envoie vers feed.php?rss ############################################### location ~ \.php$ { if (!-f $request_filename) { rewrite ^/core/rss2.php$ /feed.php?rss permanent; rewrite ^/core/rss.php$ /feed.php?rss permanent; break; } ... }

Voilà ... Des questions ?

A propos de Vincent RABAH

Directeur des systemes d'information

Je suis DSI depuis 10 ans. Spécialiste en systèmes d'information et réseaux.
Expert en management, GreenIT et virtualisation de serveurs. Vous pouvez consulter l'ensemble de mon parcours.

I do speak English even if my blog is written in French ... Feel free to leave comments, I'll answer you !


Partagez cet article :



Fil des commentaires de cet article

7 commentaire(s) Commentaires »

  1. Bonjour,
    Avec Nginx, je pense que ceci devrait fonctionner. Essayez et redites moi!

    if (!-e $request_filename) {
    rewrite ^(.*)/file/(.*)$ /index.php?file=$2 last;
    break;
    }

    A bientôt.

  2. Bonjour,
    merci pour ce post bien précis et expliqué ,
    mais je veux bien un équivalent pour ce rewrite sur nginx

    <IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteBase /
    RewriteRule ^(.*)/file/(.*) index.php?file=$2
    </IfModule>

    j'ai essayé plusieurs méthode mais ca passe pas :(....

    je vous remercie si quelqu'un pourra m'aider

    Merci.

  3. Hello,

    Oui il y en a une autre semblable au htaccess d'ailleurs:

    Ajoutter cette directive dans le fichier de site et dans la section correspondant à un server:

    location / {
    auth_basic "RESTRICTED ACCESS";
    auth_basic_user_file /chemin/vers/access_list;
    root /var/www/votre_site_enabled;
    index index.html index.htm;
    }

    Voilà pour protéger la racine d'un site dans www, à titre d'exemple simple.

    Il faudra quand même installer apache2-utils pour gérer la création de comptes et de mots de passe htdigest comme avec Apache.

    Exemple:

    htpasswd -b -c /chemin/vers/access_list UserName UserPassword

  4. Salut BigSat, il y a plusieurs manière de protéger un répertoire avec nginx :
    - mettre un fichier index.html vide et indiquer à nginx : index index.php index.html (il ouvrira un index.html vide)
    - mettre des interdictions sur une zone :
    location ^~ /secure/ {
    allow 127.0.0.1/32;
    allow 10.10.10.0/24;
    deny all;
    }

    Voilà, il y en a surement d'autre ?

  5. RABAH un prenom algérien lol ?

    en tout cas merci pour ton aide ;)

    quelque chose pour protéger un folder ? un alternative au .htaccess serrai le bienvenu

    Merci encore

  6. Bonjour Bigsat, je vais me lancer dans une série sur nginx, car visiblement, ça intéresse du monde ! Et je commencerai par les virtual hosts ! Je vais faire ça cette semaine ;)

  7. Bonjour,

    Merci pour ce tuto de syntaxe. J'ai une question svp :

    est ce que tu peux nous faire un petit turo pour les virtual host via nginx sa serai cool ;)

    Merci et a bientot

Laisser un Commentaire

Quelle est la dernière lettre du mot vrkvu ? :