NGINX: il server web veloce ed efficiente nell’uso delle risorse
Secondo una statistica di W3Techs, nel 2016 Apache è ancora il server web più utilizzato, impiegato complessivamente da più del 50% di tutti i gestori di siti web. Tuttavia, se non si prende in considerazione la totalità di tutti i siti, ma solo i 10.000 più visitati (Top 10.000), il quadro è molto diverso: meno del 30% di questi siti si basano sullo storico server e tra i top 1.000 meno del 27%. Da un lato questo è riconducibile all’altissimo numero di siti e servizi di Google in questa classifica (il 10%) che sono ospitati dai Google Web Server. Dall’altro, questo risultato dipende anche dall’ascesa fulminea del software russo NGINX (scritto anche Nginx o nginx). Nel 2010 NGINX non era altro che una delle varie alternative ad Apache (con una quota di mercato a malapena del 4%); oggi il software, pubblicato sotto licenza BSD, è utilizzato da un sito web su due nella top 10.000 e 1.000 dei siti web più visitati.
Cos’è NGINX?
La programmazione del server NGINX rilasciato nel 2004 fu iniziata dallo sviluppatore russo Igor Sysoev. Allora come oggi il focus era posto sullo sviluppo di un server che si distinguesse, oltre che per performance di alto livello e per poter servire contemporaneamente il maggior numero possibile di client, per un consumo di risorse esiguo. Considerata la crescente popolarità e diffusione di questo server web, nel 2011 Sysoev fonda la NGINX inc., società ora responsabile degli ulteriori sviluppi del software e che offre, oltre alla versione standard gratuita (NGINX Open Source), anche NGINX Plus, una soluzione a pagamento con assistenza e funzioni aggiuntive, come ad esempio un load balancing migliore.
Come Apache, NGINX è basato su una struttura modulare. Questo significa che le diverse funzioni vengono messe a disposizione attraverso diversi moduli, che gli amministratori possono attivare o disattivare. Ad esempio, i moduli vi mettono a disposizione le seguenti funzioni:
- L’application acceleration (accelerazione delle applicazioni), permette una trasmissione più veloce dei contenuti.
- Il modulo reverse proxy permette di usare NGINX come reverse proxy (http, TCP, UDP) per la web acceleration o come e-mail proxy.
- La crittografia TLS permette un trasferimento di dati sicuro.
- La gestione della larghezza di banda offre a tutti i servizi la larghezza di banda ottimale.
- Il load balancing (bilanciamento del carico) alleggerisce il server principale, distribuendo le richieste.
- Il modulo video streaming offre alte prestazioni nello streaming di MP4 e FLV.
Mentre Apache apre per ogni richiesta del client un nuovo thread o inizia un processo, il server NGINX ha un approccio basato su eventi, che gli permette di elaborare le richieste in maniera asincrona, risparmiando memoria locale e tempo. Il software del server è supportato da numerosi sistemi operativi, tra cui le numerose varianti Unix e Linux, Mac OS e Windows.
Installare e configurare NGINX
Agli utenti della versione Plus è offerto, durante l’installazione del software, il supporto diretto di NGINX. In generale comunque l’installazione avviene sulla base del familiare sistema di gestione a pacchetti, perché la maggior parte delle distribuzioni Linux dispongono del pacchetto NGINX di default nella loro repository. Se il pacchetto dovesse mancare, può essere scaricato velocemente e facilmente dal sito web di NGINX. Di seguito vi spieghiamo come installare e configurare il server web su Linux: 1. Innanzitutto con il seguente comando aggiornate il sistema di gestione dei pacchetti, in modo che il vostro sistema utilizzi durante l’installazione (inizializzata attraverso la seconda linea di codice) la nuova versione di NGINX:
sudo apt-get update
sudo apt-get install nginx
2. Di regola NGINX si avvia direttamente subito dopo. Per verificare se il software funziona correttamente, semplicemente richiamate nel vostro browser la landing page di NGINX mediante il nome di dominio del server o l’indirizzo IP pubblico. Se l’installazione è avvenuta con successo, comparirà il seguente messaggio:
3. Troverete tutto il necessario per una configurazione di NGINX nella directory /etc/nginx tra cui anche il file di configurazione centrale nginx.conf. Tutte le volte che effettuate modifiche a questo file, è necessario riavviare il server con uno dei due comandi seguenti, in modo che queste vengano rilevate:
sudo service nginx reload
sudo service nginx restart
Con i parametri start o stop potete anche avviare o disattivare completamente NGINX.
4. La sintassi del file di configurazione ha i seguenti caratteri:
- Impostazioni: tutte le impostazioni iniziano con il nome della rispettiva variabile. Attraverso gli spazi si collegano uno o più argomenti, alla fine dei quali c’è sempre un punto e virgola.
worker_connections 768;
- Impostazioni avanzate: alcune impostazioni, come la variabile events, contengono argomenti che rappresentano da parte loro impostazioni con argomenti propri. Queste sottodirettive sono contenute tra parentesi graffe.
events {
worker_connections 768;
multi_accept on;
}
- Il simbolo cancelletto: le direttive (indicazioni) che sono disattivate, sono precedute dal simbolo cancelletto (#). Eliminando il simbolo, attivate le rispettive impostazioni del server. Ad esempio:
# multi_accept on;
disattiva l’opzione per accettare più client allo stesso tempo.
- Tab e più di uno spazio: NGINX interpreta i tab e gli spazi come un unico spazio. Quando configurate NGINX potete utilizzare i tab e mantenere così una struttura ordinata con una migliore leggibilità.
5. Ulteriori informazioni sui singoli moduli, nonché tutorial per la configurazione del server web e del server proxy, si trovano nella documentazione ufficiale in lingua inglese.
Cosa rende NGINX un web server così amato
Il fatto che la popolarità di NGINX cresca continuamente, dipende da diversi motivi. Innanzitutto il server web si conforma in maniera ottimale alle richieste in contemporanea di molti siti web: non solo NGINX ottiene risultati di qualità nell’elaborazione di un grande numero di richieste dei client, ma nel contempo anche in termini di risorse. In questo modo, il software offre una soluzione perfetta alle prestazioni limitate delle connessioni dati mobile. NGINX aiuta quindi i gestori di siti web a fornire il più velocemente possibile i loro contenuti anche a utenti che usano dispositivi quali tablet e smarthphone. NGINX Open Source convince inoltre gli utenti grazie alle sue flessibili possibilità d’uso. In aggiunta alla variante classica in http del server web, NGINX garantisce ottime prestazioni nel reverse proxing, ad esempio permettendo di configurare un proxy e-mail server o un load balancer. Ma NGINX non è sempre la migliore scelta per un server web. Un hosting condiviso (shared hosting), nel quale il controllo viene regolato dalle risorse del server con l’aiuto di un’area protetta da password o un reindirizzamento interno, è difficile da realizzare. Sezioni e moduli rewrite di questo tipo si possono realizzare solo nel file di configurazione centrale e poi riavviando il server. Di conseguenza i possibili errori si riflettono su tutti i siti presenti nell’hosting condiviso. In questo ambito il server web Apache, nel quale vengono registrate le impostazioni individuali in file .htaccess separati, offre quindi un chiaro vantaggio.