Come ottimizzare la configurazione di Nginx su Ubuntu 16.04 - 17.10

6 mar 2018 2 min di lettura
Come ottimizzare la configurazione di Nginx su Ubuntu 16.04 - 17.10
Indice dei contenuti

Prerequisiti

Segui questa guida per installare Nginx - MySQL - PHP: Come installare LEMP Nginx MySQL PHP su Ubuntu 16.04-17.10

Worker Processes e Worker Connections

Le prime due variabili da ottimizzare sono i processi di lavoro e le connessioni di lavoro.
La prima cosa da fare è capire quale è il numero di core che hai a disposizione sul tuo server. Di default worker_processes è impostato su auto.

Da terminale dare questo comando:

grep processor /proc/cpuinfo | wc -l

Se il risultato è per esempio "1", questo è il numero di core che hai a disposizione sul tuo server.

Il comando worker_connections ci dice quante persone possono essere contemporaneamente servite da Nginx. Il valore predefinito è 768.
Possiamo controllare i limiti del nostro core con questo comando:

ulimit -n

Un esempio di risultato potrebbe essere "1024".

Apriamo il file di configurazione di Nginx.
Da console:

sudo nano /etc/nginx/nginx.conf

Cerchiamo le seguenti righe e aggiorniamole con i valori ottenuti dai comandi precedenti:


worker_processes 1;
worker_connections 1024;

Buffer

Un'altra configurazione importante che possiamo fare riguarda la dimensione del buffer. Se le dimensioni del buffer sono troppo basse, Nginx dovrà scrivere su un file temporaneo, causando una continua lettura e scrittura su disco. Queste sono le variabili che modificheremo:

client_body_buffer_size: gestisce la dimensione del buffer del client, ovvero tutte le azioni POST inviate a Nginx.

client_header_buffer_size: Gestisce la dimensione dell'intestazione del client.

client_max_body_size: La dimensione massima consentita per una richiesta client. Se la dimensione massima viene superata, Nginx restituirà un errore "413" oppure "Request Entity Too Large".

large_client_header_buffers: Il numero massimo e la dimensione dei buffer per le intestazioni dei client di grandi dimensioni.

Quindi, sempre nello stesso file precedente nginx.conf

Aggiungere o modificare i seguenti parametri:


client_body_buffer_size 10K;
client_header_buffer_size 1k;
client_max_body_size 8m;
large_client_header_buffers 2 1k;

Timeouts

I timeout possono anche migliorare drasticamente le prestazioni.

client_body_timeout e client_header_timeout sono responsabili del tempo in cui un server aspetterà che un client body o client header vengano inviati dopo la richiesta. Se non viene inviato né un body né un header, il server emetterà un errore "408" o "Request time out".

Keepalive_timeout Nginx chiuderà le connessioni con il cliente dopo questo periodo di tempo.

send_timeout riguarda il tempo risposta tra due operazioni di lettura; se dopo questo tempo il client non accetta nulla, Nginx chiuderà connessione.

Quindi, nello stesso file precedente nginx.conf

Aggiungere o modificare i seguenti parametri:


client_body_timeout 12;
client_header_timeout 12;
keepalive_timeout 15;
send_timeout 10;

Compressione con Gzip

Gzip aiuta a ridurre il traffico di rete di Nginx.

Sempre nello stesso file nginx.conf

Aggiungere o modificare i seguenti parametri:


gzip             on;
gzip_comp_level  2;
gzip_min_length  1000;
gzip_proxied     expired no-cache no-store private auth;
gzip_types       text/plain application/x-javascript text/xml text/css application/xml;

Logging

Nginx registra ogni tipo di richiesta verso il server in un file di registro, è possibile disattivarlo.

Nello stesso file nginx.conf

Aggiungere o modificare i seguenti parametri:


access_log off;

Salvare e chiudere il file.

Per verificare se le configurazioni sono state effettuate correttamente, da console:

sudo nginx -t

Static File Caching

È possibile impostare la scadenza della cache per determinati tipi di file.

Aprire e modificare il seguente file:

sudo nano /etc/nginx/sites-available/default

Aggiungere le seguenti righe di codice all'interno del server{...} block:


server{
    ...
    location ~* .(jpg|jpeg|png|gif|ico|css|js)$ {
    expires 365d;
    }
    ...
}

Salvare e chiudere il file.

Per verificare se le configurazioni sono state effettuate correttamente, da console:

sudo nginx -t

Se non ci sono errori riavviare nginx:

sudo service nginx restart

L'ottimizzazione di Nginx è terminata.

Support us with a

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.