Learning Center
Serveur web Nginx

Exemples de directive location Nginx

6 févr. 2026
Adnene Mabrouk
Adnene Mabrouk

La directive location de Nginx est un outil puissant pour contrôler la manière dont différents types de requêtes sont traités. En définissant des règles dans les blocs location, vous pouvez appliquer des configurations spécifiques, rediriger le trafic vers différentes parties de votre application ou même refuser complètement certaines requêtes. Une utilisation correcte de cette directive permet une gestion efficace des requêtes, essentielle pour améliorer les performances, la sécurité et les fonctionnalités des applications web.

Syntaxe de base de la directive location
Copier le lien

La directive location est définie dans le fichier de configuration nginx.conf :

location [modifier] uri { ... }

  • modifier : paramètre optionnel définissant le type de correspondance (exacte, préfixe, expression régulière, etc.)

  • uri : l’URI à faire correspondre

À l’intérieur des accolades, vous pouvez définir diverses directives comme proxy_pass, root ou index.

Exemple de correspondance exacte
Copier le lien

Une correspondance exacte se produit lorsque la chaîne fournie correspond exactement à l’URI demandée.

location = /exact-match {

    root /var/www/html;

    index index.html;

}

Seules les requêtes vers /exact-match seront traitées par ce bloc.

Vous pouvez également utiliser une condition if (notez que Nginx ne possède pas de if-else classique) :

location = /exact-match {

    root /var/www/html;

    index index.html;

    if ($http_user_agent ~* "Chrome") {

        add_header X-Browser "Chrome";

    }

}

Si l’agent utilisateur est Chrome, la réponse inclura l’en-tête supplémentaire X-Browser.

Exemple de correspondance par préfixe
Copier le lien

C’est le type le plus courant : il correspond à toute URI commençant par la chaîne spécifiée.

location /prefix {

    root /var/www/html;

    index index.html;

    if ($request_method = POST) {

        return 405;

    }

}

Ce bloc gère toutes les requêtes commençant par /prefix. Si la méthode est POST, Nginx renvoie 405 Method Not Allowed.

Exemple avec expressions régulières
Copier le lien

Pour des scénarios plus complexes, vous pouvez utiliser des expressions régulières.

Caractères génériques courants :

  • . correspond à un caractère

  • .* correspond à n’importe quelle séquence

  • ^ début de chaîne

  • $ fin de chaîne

location ~* \.php$ {

    fastcgi_pass 127.0.0.1:9000;

    fastcgi_index index.php;

    include fastcgi_params;

    if ($request_uri ~* "/admin") {

        return 403;

    }

    if ($request_uri !~* "/admin") {

        add_header X-Admin "Not Admin";

    }

}

Explications :

  • ~* indique une regex insensible à la casse

  • \.php$ correspond aux fichiers PHP

  • si l’URI contient /admin, retour 403

  • sinon, ajout de l’en-tête X-Admin

Correspondance insensible à la casse
Copier le lien

location ~* \.jpg$ {

    root /var/www/images;

    if ($http_referer !~* "^https?://(www\.)?example\.com") {

        return 403;

    }

}

Correspond à .jpg, .JPG, etc., et sert les images uniquement si le referer provient de example.com.

Priorité et ordre
Copier le lien

Nginx applique les règles suivantes :

  1. Correspondance exacte (=)

  2. Expressions régulières (~, ~*) dans l’ordre de définition

  3. Préfixes (/), le plus long étant prioritaire

Exemple :

location = /exact { }

location ~* \.jpg$ { }

location / { }

Blocs location imbriqués
Copier le lien

location /nested {

    location /nested/subnested {

        root /var/www/html;

    }

    root /var/www/html;

}

Les requêtes vers /nested/subnested utilisent le bloc interne.

Exemple réel de serveur web
Copier le lien

server {

listen 80;

server_name localhost;

location / {

root /var/www/html;

index index.html;

}

location = /about {

root /var/www/html;

index about.html;

}

location /api {

proxy_pass http://localhost:3000;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header X-Forwarded-Proto $scheme;

}

location ~ \.php$ {

root /var/www/html;

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

include fastcgi_params;

}

location ~* \.(jpg|jpeg|png|gif|ico)$ {

root /var/www/images;

}

location /admin {

root /var/www/admin;

index index.html;

location /admin/stats {

proxy_pass http://localhost:8080/stats;

}

}

}

Recharger Nginx
Copier le lien

sudo systemctl reload nginx

Tests et débogage
Copier le lien

Vérifier la configuration :

sudo nginx -t

Tester les routes :

curl -I http://localhost/about

curl -X POST http://localhost/prefix/form

curl -H "User-Agent: Chrome" http://localhost/exact-match

Consulter les logs :

tail -f /var/log/nginx/access.log

tail -f /var/log/nginx/error.log

Restriction d’accès aux routes sensibles
Copier le lien

location /admin {

    allow 192.168.1.100;

    deny all;

}

Seule cette IP aura accès.

root vs alias
Copier le lien

Directive

Comportement

root

ajoute l’URI

alias

remplace le préfixe

Exemple :

location /files/ {

    alias /data/downloads/;

}

Remarque : toujours terminer alias par /.

Conclusion
Copier le lien

Comprendre la directive location est essentiel pour maîtriser le traitement des requêtes dans Nginx. Les différents types de correspondance (exacte, préfixe, regex) et leurs priorités influencent directement les performances et le comportement du site. En combinant ces mécanismes avec des blocs imbriqués, vous obtenez une configuration propre, efficace et sécurisée.