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.