Chiunque abbia lavorato nel mondo della programmazione web conosce quale importante ruolo abbia giocato il web server Apache in questi anni. Le sue caratteristiche lo hanno reso molto celebre all’interno del settore, tanto da essere incluso all’interno della famosa sigla LAMP (Linux, Apache, MySQL e PHP) che indica il set di tecnologie dominanti per la realizzazione di siti web negli ultimi anni.
La completezza di funzionalità e le performance offerte da Apache lo rendono un ottimo web server e sicuramente il suo successo è meritato, ma negli ultimi tempi si erano fatte più insistenti le critiche riguardo al metodo con cui esso gestiva i processi e sui suoi limiti in contesti che prevedevano un numero molto elevato di connessioni.
Apache utilizzava l’approccio classico di gestione richieste, ovvero faceva corrispondere a ogni client un thread (anche se la sua gestione interna è molto più complicata.
Sulla base di questa necessità è nato NGINX (pronunciato come “engine-x”) , nginx fornisce rapidamente i contenuti statici con un utilizzo efficiente delle risorse di sistema. È possibile distribuire contenuti dinamici HTTP su una rete che utilizza i gestori FastCGI per gli script, e può servire come un bilanciatore di carico software molto capace.
nginx utilizza un approccio asincrono basato su eventi nella gestione delle richieste in modo da ottenere prestazioni più prevedibili sotto stress, in contrasto con il modello del server HTTP Apache che usa un approccio orientato ai thread o ai processi nella gestione delle richieste.
In origine, nginx è stato sviluppato per soddisfare le esigenze di vari siti gestiti da Rambler (un portale russo), per il quale ngnix serviva 500 milioni di richieste al giorno a partire da settembre 2008.
Secondo il Web Server Survey Netcraft di febbraio 2014, nginx è risultato essere il terzo server web più utilizzato in tutti i domini (15,00% dei siti esaminati) e il secondo server web più utilizzato per tutti i siti “attivi” (13,46% dei siti esaminati). Secondo BuiltWith, ad agosto 2011 era utilizzato dal 9,92% del primo milione di siti web e la sua crescita all’interno dei primi diecimila, centomila ed un milione era in aumento.

Citando direttamente le FAQ di NGINX:
Nginx e Lighttpd sono probabilmente i due server asincroni più conosciuti e
Apache è indubbiamente è il miglior server process-based. […] il vantaggio
principale dell’approccio asincrono è la scalabilità. In un server process-based,
ogni connessione simultanea richiede un thread che implica un overhead
significativo. Un server asincrono, dall’altra parte, è event-driven e gestisce le
richieste in un singolo (o almeno, pochi) thread.
Mentre un server process-based può avere di media delle prestazioni alla pari
con un server asincrono sotto carichi leggeri, con un carico più pesante di
solito consuma più RAM con un significativo degrado delle performance.

Utilizzando Nginx con …Node.js,WebSockets, Socket.IO possiamo creare applicazioni realtime (games,chat,aggregatori di dati,ecc) con elevate prestazioni.