Termini di configurazione
Per poter configurare NGINX nella maniera più corretta, è necessario capire prima di tutto quali sono i termini utilizzati.
Context
Il context (contesto), invece, corrisponde a una sezione della configurazione, al cui interno vengono settate le directive specifiche per quel contesto.
Il contesto principale è detto Main Context, in cui vengono impostate le direttive globali che vengono applicate al processo master.
Altri contesti importanti sono:
- HTTP Context, che contiene tutte le informazioni riguardanti le connessioni HTTP
- Server Context, dove viene definito il Virtual Host
Directive
Una directive è una specifica opzione di configurazione di NGINX, e consiste in una chiave e in un valore.
- Location Context, che associa gli URI richiesti al Server Context genitore
Inheritance
In una configurazione NGINX, un contesto eredita le direttive dal contesto genitore.
server {
root /site/demo;
location {
# Eredita
# root /site/demo;
}
}
L'ereditarietà cambia però anche in base ai diversi tipi di direttive.
Standard Directive
Sono quelle più comuni. Possono essere dichiarate una volta sola, e ogni dichiarazione successiva sovrascrive quelle precedenti.
I contesti figli ereditano la direttiva dal contesto genitore.
In un contesto figlio, la definizione di una direttiva sovrascrive quella nel contesto genitore.
server {
root /sites/demo;
location /test {
# La direttiva root viene sovrascritta
# per questo contesto
root /sites/demo/testing;
}
}
Array Directive
Possono essere dichiarate più volte, senza sovrascrivere le direttive precedenti.
access_log /var/log/nginx/access.log;
access_log /var/log/nginx/security.access.log;
Tutti i contesti figli condividono le impostazioni del contesto genitore. Se però un figlio descrive una nuova direttiva, per quel contesto tutte le direttive precedenti vengono sovrascritte.
server {
access_log /var/log/nginx/access.log;
access_log /var/log/nginx/security.access.log;
location /test {
# Per questo contesto, le direttive precedenti vengono sovrascritte.
access_log /var/log/nginx/test.log;
}
}
Action Directive
Invocano un cambiamento nell'esecuzione di una configurazione, interrompendone il normale flusso.
return 403 "No permissions";
# Oppure
rewrite ^/greet /user/greetings;
In questo caso, l'ereditarietà non viene applicata, visto che fermano l'esecuzione della configurazione.