Secondo una sta­ti­sti­ca di W3Techs, nel 2016 Apache è ancora il server web più uti­liz­za­to, impiegato com­ples­si­va­men­te da più del 50% di tutti i gestori di siti web. Tuttavia, se non si prende in con­si­de­ra­zio­ne 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 è ri­con­du­ci­bi­le all’altissimo numero di siti e servizi di Google in questa clas­si­fi­ca (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 al­ter­na­ti­ve ad Apache (con una quota di mercato a malapena del 4%); oggi il software, pub­bli­ca­to sotto licenza BSD, è uti­liz­za­to da un sito web su due nella top 10.000 e 1.000 dei siti web più visitati.

Cos’è NGINX?

La pro­gram­ma­zio­ne del server NGINX ri­la­scia­to nel 2004 fu iniziata dallo svi­lup­pa­to­re russo Igor Sysoev. Allora come oggi il focus era posto sullo sviluppo di un server che si di­stin­gues­se, oltre che per per­for­man­ce di alto livello e per poter servire con­tem­po­ra­nea­men­te il maggior numero possibile di client, per un consumo di risorse esiguo. Con­si­de­ra­ta la crescente po­po­la­ri­tà e dif­fu­sio­ne di questo server web, nel 2011 Sysoev fonda la NGINX inc., società ora re­spon­sa­bi­le degli ulteriori sviluppi del software e che offre, oltre alla versione standard gratuita (NGINX Open Source), anche NGINX Plus, una soluzione a pagamento con as­si­sten­za e funzioni ag­giun­ti­ve, come ad esempio un load balancing migliore.

Come Apache, NGINX è basato su una struttura modulare. Questo significa che le diverse funzioni vengono messe a di­spo­si­zio­ne at­tra­ver­so diversi moduli, che gli am­mi­ni­stra­to­ri possono attivare o di­sat­ti­va­re. Ad esempio, i moduli vi mettono a di­spo­si­zio­ne le seguenti funzioni:

  • L’ap­pli­ca­tion ac­ce­le­ra­tion (ac­ce­le­ra­zio­ne delle ap­pli­ca­zio­ni), permette una tra­smis­sio­ne più veloce dei contenuti.
  • Il modulo reverse proxy permette di usare NGINX come reverse proxy (http, TCP, UDP) per la web ac­ce­le­ra­tion o come e-mail proxy.
  • La crit­to­gra­fia TLS permette un tra­sfe­ri­men­to di dati sicuro.
  • La gestione della larghezza di banda offre a tutti i servizi la larghezza di banda ottimale.
  • Il load balancing (bi­lan­cia­men­to del carico) al­leg­ge­ri­sce il server prin­ci­pa­le, di­stri­buen­do le richieste.
  • Il modulo video streaming offre alte pre­sta­zio­ni 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, ri­spar­mian­do memoria locale e tempo. Il software del server è sup­por­ta­to da numerosi sistemi operativi, tra cui le numerose varianti Unix e Linux, Mac OS e Windows.

In­stal­la­re e con­fi­gu­ra­re NGINX

Agli utenti della versione Plus è offerto, durante l’in­stal­la­zio­ne del software, il supporto diretto di NGINX. In generale comunque l’in­stal­la­zio­ne avviene sulla base del familiare sistema di gestione a pacchetti, perché la maggior parte delle di­stri­bu­zio­ni Linux di­spon­go­no del pacchetto NGINX di default nella loro re­po­si­to­ry. Se il pacchetto dovesse mancare, può essere scaricato ve­lo­ce­men­te e fa­cil­men­te dal sito web di NGINX. Di seguito vi spie­ghia­mo come in­stal­la­re e con­fi­gu­ra­re il server web su Linux: 1. In­nan­zi­tut­to con il seguente comando ag­gior­na­te il sistema di gestione dei pacchetti, in modo che il vostro sistema utilizzi durante l’in­stal­la­zio­ne (ini­zia­liz­za­ta at­tra­ver­so 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 di­ret­ta­men­te subito dopo. Per ve­ri­fi­ca­re se il software funziona cor­ret­ta­men­te, sem­pli­ce­men­te ri­chia­ma­te nel vostro browser la landing page di NGINX mediante il nome di dominio del server o l’indirizzo IP pubblico. Se l’in­stal­la­zio­ne è avvenuta con successo, comparirà il seguente messaggio:

3. Troverete tutto il ne­ces­sa­rio per una con­fi­gu­ra­zio­ne di NGINX nella directory /etc/nginx tra cui anche il file di con­fi­gu­ra­zio­ne centrale nginx.conf. Tutte le volte che ef­fet­tua­te modifiche a questo file, è ne­ces­sa­rio 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 di­sat­ti­va­re com­ple­ta­men­te NGINX.

4. La sintassi del file di con­fi­gu­ra­zio­ne ha i seguenti caratteri:

  • Im­po­sta­zio­ni: tutte le im­po­sta­zio­ni iniziano con il nome della ri­spet­ti­va variabile. At­tra­ver­so gli spazi si collegano uno o più argomenti, alla fine dei quali c’è sempre un punto e virgola.  
worker_connections 768;
  • Im­po­sta­zio­ni avanzate: alcune im­po­sta­zio­ni, come la variabile events, con­ten­go­no argomenti che rap­pre­sen­ta­no da parte loro im­po­sta­zio­ni con argomenti propri. Queste sot­to­di­ret­ti­ve sono contenute tra parentesi graffe.
events {
    worker_connections 768;
    multi_accept on;
}
  • Il simbolo can­cel­let­to: le direttive (in­di­ca­zio­ni) che sono di­sat­ti­va­te, sono precedute dal simbolo can­cel­let­to (#). Eli­mi­nan­do il simbolo, attivate le ri­spet­ti­ve im­po­sta­zio­ni del server. Ad esempio:
# multi_accept on;

disattiva l’opzione per accettare più client allo stesso tempo.

  • Tab e più di uno spazio: NGINX in­ter­pre­ta i tab e gli spazi come un unico spazio. Quando con­fi­gu­ra­te NGINX potete uti­liz­za­re i tab e mantenere così una struttura ordinata con una migliore leg­gi­bi­li­tà.

5. Ulteriori in­for­ma­zio­ni sui singoli moduli, nonché tutorial per la con­fi­gu­ra­zio­ne del server web e del server proxy, si trovano nella do­cu­men­ta­zio­ne ufficiale in lingua inglese.

Cosa rende NGINX un web server così amato

Il fatto che la po­po­la­ri­tà di NGINX cresca con­ti­nua­men­te, dipende da diversi motivi. In­nan­zi­tut­to il server web si conforma in maniera ottimale alle richieste in con­tem­po­ra­nea di molti siti web: non solo NGINX ottiene risultati di qualità nell’ela­bo­ra­zio­ne 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 pre­sta­zio­ni limitate delle con­nes­sio­ni dati mobile. NGINX aiuta quindi i gestori di siti web a fornire il più ve­lo­ce­men­te possibile i loro contenuti anche a utenti che usano di­spo­si­ti­vi quali tablet e smar­th­pho­ne. NGINX Open Source convince inoltre gli utenti grazie alle sue fles­si­bi­li pos­si­bi­li­tà d’uso. In aggiunta alla variante classica in http del server web, NGINX ga­ran­ti­sce ottime pre­sta­zio­ni nel reverse proxing, ad esempio per­met­ten­do di con­fi­gu­ra­re 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 rein­di­riz­za­men­to interno, è difficile da rea­liz­za­re. Sezioni e moduli rewrite di questo tipo si possono rea­liz­za­re solo nel file di con­fi­gu­ra­zio­ne centrale e poi riav­vian­do il server. Di con­se­guen­za i possibili errori si ri­flet­to­no su tutti i siti presenti nell’hosting condiviso. In questo ambito il server web Apache, nel quale vengono re­gi­stra­te le im­po­sta­zio­ni in­di­vi­dua­li in file .htaccess separati, offre quindi un chiaro vantaggio.

Vai al menu prin­ci­pa­le