Location Blocks
Context location
Il contesto location permette di associare a un URL una risorsa che il Virtual Host deve restituire.
Fa parte del contesto server.
Viene definito con:
location [uri to match] {
# actions to take
}
Nella configurazione introdotta in Creazione di un Virtual Host, il risultato sarebbe il seguente:
# events è necessario per ritenere la configurazione valida
events {}
http {
include mime.types; # Path relativa del file rispetto al file di configurazione
server {
listen 80;
server_name appunti.truppaperot.it;
root /sites/demo;
location /greet {
return 200 'Hi there! From NGINX /greet';
}
}
}
Direttiva return
La direttiva return specifica il codice di risposta e i dati di risposta di una location.
return [code] [data]
Tipi di Match
Si può definire, per ogni contesto location, come deve essere interpretata la risoluzione di un URL.
Prefix Match
Il prefix match convalida ogni URL che inizia con una stringa.
location /greet {
# Risponderanno con questa regola anche
# /greeting
# /greetings
# /greetings/john
}
Exatch Match
Al contrario del prefix match, la risoluzione di un URL avviene solo se corrisponde esattamente alla stringa specificata.
location = /greet {
# Risponde solo /greet
}
Regex Match
ATTENZIONE
Questa opzione richiede la libreria e il modulo di NGINX pcre installati
Il questa configurazione, l'URL verrà risolto se corrisponde alla RegEx definita.
La RegEx è KEY SENTITIVE
location ~ /greet[0-9] {
# Risponderanno
# /greet0
# /greet1
# ...
# /greet9
# Ma non /greet o /gReet1
}
Per avere una RegEx KEY INSENSITIVE, è necessario aggiungere * dopo il simbolo ~
location ~* /greet[0-9] {
# Risponderanno
# /greet0
# /greeT1
# ...
# /gReet9
# Ma non /greet
}
Preferential Prefix Match
Si comporta allo stesso modo di un prefix match, ma con una precedenza superiore a un regex match
location ^~ /Greet2 {
# Ha precedenza rispetto a
# location ~ /Greet[0-9]
# Rispondono anche
# /Greet2ings
# /Greet2/john
}
Priorità dei tipi di match
Si possono definire più regole per degli URL simili, che verranno risolti nel seguente ordine di precedenza:
- Exact Match
- Preferential Prefix Match
- RegEx Match (se esistono sia un Preferential Prefix e un RegEx Match che risolvono in egual modo lo stesso URL, il primo blocco scritto verrà risolto)
- Prefix Match