Configurazione
Sintassi
La sintassi dei file di configurazione di Nginx è piuttosto semplice e ricorda quella dei linguaggi C-like.
Le varie opzioni che è possibile specificare nel file di configurazione sono dette direttive. Una direttiva può essere semplice, ovvero contenere un solo valore, o composta, ovvero costituita da più campi.
Una direttiva semplice è costituita da un nome (che identifica l'opzione da configurare), un valore (da assegnare all'opzione relativa) e termina con il carattere punto e virgola (;). Nome e valore sono separati da uno spazio.
Le direttive composte sono dette blocchi. Esse non terminano con il carattere punto e virgola. Sono invece seguite da un blocco di direttive ad esse associate delimitato da parentesi graffe. Nel gergo di Nginx, un blocco contenente delle direttive crea un contesto.
Parametri di Configurazione
I file di configurazione hanno parametri distribuiti in sezioni o contesti, che sono:
- nessuna sezione - parametri globali, all'inizio della configurazione
events{...}
- controllo degli MPM, secondo l'architettura event MPMhttp{...}
- relativi al protocollo HTTPserver{... }
- relativi al server stesso
Ciascun parametro è terminato da punto e virgola (;
). Per comprensibilità ogni parametro è sulla sua riga. I commenti sono preceduti da #
e vanno a fine riga.
Ispezioniamo i parametri di default.
Parametri Globali
user nginx
- l'tente coi cui permessi gira il server. Usareroot
è pericoloso.worker_processes auto
- il mumero di workers. Si può sostituireauto
con un numero intero, almeno 1.auto
alloca un core della CPU al processo master e i rimanenti core ciascuno ad un processo worker.error_log
- la locazione del log degli errori e il livello minimo di errorepid
- ove viene registrato il PID del processo, per poter inviargli dei segnali
Sezione events
worker_connections 1024
- quante connessioni client consecutive un worker può accettare nella stessa sessione
Sezione http
include /etc/nginx/mime.types
- file con i tipi MIME e le corrispondenti estensionidefault_type application/octet-stream
- tipo MIME di defaultlog:format
- nome e struttura di un formato di logaccess_log
- locazione del file di log degli accessi e formato usatosendfile on
- usa la system callsendfile
del kernel per l'invio di filessendfile_max_chunk
- dimensione massima di ogni segmento inviato consendfile
#tcp_nopush on
- disabilitazione del flag TCPPSH
, che implementa lo Interactive Transfer a bassa latenzakeepalive_timeout 65
- intervallo massimo tra le richieste#gzip on
- compressione ``gzip` dei responsissl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3
- protocolli SSL/TLS accettati
Sezione server
listen 80
- porta d'ascoltoserver_name localhost
- nome del serverlocation / {...}
- parametri di un path, qui il percorso radiceroot /usr/share/nginx/html
- equivalente della DocumentRoot di Apacheindex index.html index.htm
- nomi dei file HTML di defaulttry_files $uri $uri/ =404
- prova prima a servire la richiesta come file, poi come directory, infine da l'errore 404
- `location /admin {...}
alias /var/www/reserved
- crea un alias per la location `/admin
error_page
- pagine di errore customizzate
Esempi di Configurazione
Configurazione minima per Pagine Statiche
user nginx;
worker_processes 1;
error_log nginx_error.log;
http {
server {
listen 80;
location / {
root /var/www/html;
}
}
}
Configurazione Alternativa per Containers
Un utente non privilegiato e logging su standard output ed error:
worker_processes 1;
user nobody nobody;
error_log /dev/stdout;
pid /tmp/nginx.pid;
events {
worker_connections 1024;
}
http {
# Set an array of temp and cache files options
# that otherwise defaults to
# restricted locations accessible only to root.
client_body_temp_path /tmp/client_body;
fastcgi_temp_path /tmp/fastcgi_temp;
proxy_temp_path /tmp/proxy_temp;
scgi_temp_path /tmp/scgi_temp;
uwsgi_temp_path /tmp/uwsgi_temp;
# mime types
include /etc/nginx/mime.types;
default_type application/octet-stream;
server {
listen 8080;
root /usr/share/nginx/html;
access_log /dev/stdout;
error_log /dev/stdout;
}
}