Learning Center
Nginx-webserver

Voorbeelden van de Nginx Location-directive

9 feb 2026
Adnene Mabrouk
Adnene Mabrouk

De Nginx location-directive is een krachtig hulpmiddel voor het beheren van verschillende soorten requests. Door regels te definiëren in location-blokken kun je specifieke configuraties toepassen, verkeer naar verschillende delen van je applicatie routeren of bepaalde requests volledig weigeren. Correct gebruik van de Nginx location-directive is essentieel voor betere prestaties, beveiliging en functionaliteit van webapplicaties.

Basissyntaxis van de Nginx Location-directive
Link kopiëren

De location-directive wordt gedefinieerd in het configuratiebestand nginx.conf:

location [modifier] uri { ... }

  • modifier – optionele parameter die het type match bepaalt (bijv. exact, prefix, regex)

  • uri – de URI die moet worden gematcht

Binnen de accolades kun je verschillende instellingen definiëren, zoals proxy_pass, root en index.

Exacte match
Link kopiëren

Een exacte match treedt alleen op wanneer de opgegeven string exact overeenkomt met de aangevraagde URI.

location = /exact-match {

    root /var/www/html;

    index index.html;

}

Alleen requests naar /exact-match worden door dit location-blok verwerkt.

Je kunt ook voorwaarden toevoegen met if (houd er rekening mee dat Nginx geen klassieke if-else kent):

location = /exact-match {

    root /var/www/html;

    index index.html;

    if ($http_user_agent ~* "Chrome") {

        add_header X-Browser "Chrome";

    }

}

Als de user agent Chrome is, wordt een extra header X-Browser toegevoegd.

Prefix-match
Link kopiëren

Dit is het meest voorkomende type en matcht elke URI die begint met de opgegeven string:

location /prefix {

    root /var/www/html;

    index index.html;

    if ($request_method = POST) {

        return 405;

    }

}

Requests zoals /prefix/page1 of /prefix/page2 worden hier verwerkt. Bij POST-requests retourneert Nginx 405 Method Not Allowed.

Reguliere expressies
Link kopiëren

Voor complexere matches kun je regex gebruiken.

Veelgebruikte wildcards:

  • . – elk enkel teken

  • .* – willekeurige tekenreeks

  • ^ – begin van de string

  • $ – einde van de string

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";

    }

}

Uitleg:

  • ~* betekent hoofdletterongevoelige regex

  • \.php$ matcht alle PHP-bestanden

  • bevat de URI /admin → 403 Forbidden

  • anders wordt X-Admin: Not Admin toegevoegd

Hoofdletterongevoelige match
Link kopiëren

location ~* \.jpg$ {

    root /var/www/images;

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

        return 403;

    }

}

Alle JPG-varianten worden gematcht, maar alleen geserveerd als de referer van example.com komt.

Prioriteit van location-blokken
Link kopiëren

Nginx volgt deze volgorde:

  1. Exact (=) – hoogste prioriteit

  2. Regex (~, ~*) – in volgorde van definitie

  3. Prefix (/) – langste prefix wint

Voorbeeld:

location = /exact { }

location ~* \.jpg$ { }

location / { }

Geneste location-blokken
Link kopiëren

location /nested {

    location /nested/subnested {

        root /var/www/html;

    }

    root /var/www/html;

}

/nested/subnested wordt verwerkt door het binnenste blok.

Praktisch webservervoorbeeld
Link kopiëren

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;

}

}

}

NGINX herladen
Link kopiëren

sudo systemctl reload nginx

Testen en debuggen
Link kopiëren

Configuratie controleren:

sudo nginx -t

Requests testen:

curl -I http://localhost/about

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

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

Logs bekijken:

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

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

Toegangsbeperking voor gevoelige locaties
Link kopiëren

location /admin {

    allow 192.168.1.100;

    deny all;

}

Alleen deze IP krijgt toegang.

root vs alias
Link kopiëren

Directive

Gedrag

Resultaat

root

voegt URI toe

/var/www/static/css/style.css

alias

vervangt prefix

/var/www/assets/css/style.css

Alias-voorbeeld:

location /files/ {

    alias /data/downloads/;

}

Let op: gebruik altijd een afsluitende / bij alias.

Conclusie
Link kopiëren

Een goed begrip van de location-directive is essentieel voor correcte request-afhandeling. Exacte matches, prefixes en regex hebben elk hun eigen prioriteit en beïnvloeden prestaties en gedrag. Door location-blokken te nesten krijg je zeer fijne controle over URL-routing. Wie deze patronen beheerst, bouwt schone, efficiënte en veilige Nginx-configuraties.