Scegliere il webserver: Apache, Lighttpd o Nginx, tutte le caratteristiche principali

Dopo anni di quasi totale predominio da parte di Apache sul panorama dei web server,si sono affacciate da qualche tempo a questa parte alternative molto valide e molto piu performanti del progetto della Apache Software Foundation. In questo articolo vedremo come Lighttpd e Nginx si candidano ad essere i principali pretendenti allo scettro di web server piu performante della classe. Scegliere un webserver diverso e un modo molto saggio per migliorare le performance del proprio server, con un risultato spesso non immaginabile e difficilmente ottenibile se non con l'aumento delle risorse hardware, un passaggio costoso e poco produttivo in ambienti con budget ristretti.

Dopo anni di quasi totale predominio da parte di Apache sul panorama dei web server,si sono affacciate da qualche tempo a questa parte alternative molto valide e molto più performanti del progetto della Apache Software Foundation.

In questo articolo vedremo come Lighttpd e Nginx si candidano ad essere i principali pretendenti allo scettro di web server più performante della classe. Scegliere un webserver diverso è un modo molto saggio per migliorare le performance del proprio server, con un risultato spesso non immaginabile e difficilmente ottenibile se non con l’aumento delle risorse hardware, un passaggio costoso e poco produttivo in ambienti con budget ristretti. 

HostingTalk.it ha una serie di articoli dedicati alla analisi e installazione di altri webserver, qui i principali:

A cura di Valentino di Servermanaged.it per HostingTalk.it

Perchè scegliere Apache

Apache ha costruito attraverso gli anni la sua fama di web server d’eccellenza. Il vasto numero di moduli ad estensione delle funzionalità di base del demone, la grande affidabilità e la facilità di implementazione di infrastrutture equipaggiate con Apache, ne hanno fatto una scelta quasi obbligata e molto affidabile.

Tuttavia, ogni software presenta vantaggi  e svantaggi.

Apache ha tra i vari punti di forza la modularità, con un numero di estensioni veramente molto vasto, utilizzabili per qualsiasi tipo di esigenza, che sia il proxying, l’autenticazione, il caching, il virtual hosting, solo per citarne alcuni. Apache viene utilizzato da più di dieci anni sui web server di tutto il mondo e si è costruito una reputazione di affidabilità e solidità, oltre ad essere facilmente configurabile, con una sintassi chiara ed esplicativa.

Il bundle Lamp (Linux + Apache + Php + Mysql) largamente diffuso presso i fornitori di hosting e distribuito al grande pubblico,ha fatto si che quando si parlasse di server web,il pensiero venisse subito rivolto ad Apache.

L’integrazione nei pannelli di gestione hosting,come ISPconfig, Cpanel, Plesk, Virtualmin ha contribuito ulteriormente a questa larga diffusione.

Apache è inoltre accompagnato da un’ottima e ben fornita documentazione.

I punti deboli di Apache

Tra le principali cause che hanno spinto gli sviluppatori a ricercare soluzioni alternative ad Apache, quella scatenante è l’enorme consumo di memoria del demone. Apache è basato su un’architettura multithreaded. Un thread è un singolo processo che viene diviso ed eseguito in modo parallelo e concorrente.

Questo tipo di esecuzione coinvolge l’utilizzo di grandi quantitativi di memoria. Esistono pagine e pagine di documentazione relativa all’ottimizzazione dell’utilizzo della memoria per questo web server, che per quanto spinta può risultare spesso non sufficiente.

Inoltre,il fatto che la maggior parte degli attacchi di tipo DoS (si pensi all’attacco di tipo slow-loris) o molti exploit siano pensati per avere come obiettivo Apache e le sue vulnerabilità, fa ben vedere come ai tanti vantaggi di questo web server vadano a fare da contrappunto delle lacune molto marcate.

Cosa cambia in Lighttpd e Nginx

Nginx e Lighttpd sono web servers di tipo asincrono. Laddove Apache è basato su un’architettura process-based e necessità di 1 thread per ogni richiesta da soddisfare, Nginx e Lighttpd sono basati su un’architettura che consente di servire più richieste con uno solo o con pochissimi thread.

Questa sostanziale differenza tra i due tipi di progettazione, si traduce in un elevato consumo di memoria su Apache, e in un consumo quasi nullo o modesto su Nginx e Lighttpd.

Scegliere Lighttpd

Lighttpd e’ utilizzato da Youtube per servire 100 milioni di video al giorno.

E’ stato progettato per risolvere il problema del C10K, ovvero riesce a gestire circa 10.000 richieste simultanee, punto su cui i web server tradizionali hanno finora fallito. Ha un’architettura singlethreaded e consuma poca memoria. Attualmente, il principale utilizzo di questo web server è quello di fungere da reverse proxy, facendo da frontend per Apache.

Lighttpd è molto veloce nel servire contenuti statici ed immagini.

Se tra le richieste in arrivo al server si è in presenza di file che possono essere serviti dal frontend, in questo caso Lighttpd, le richieste vengono soddisfatte da quest’ultimo. Le richieste di contenuti dinamici, come PHP, vengono invece inoltrate ad Apache alleviando notevolmente il carico sul sistema.

Curiosità : durante i primi anni di utilizzo, alcuni utenti hanno riscontrato problemi di aumento ingiustificato della memoria impegnata da Lighttpd, che costringeva ad effettuare un riavvio periodico del demone.

Lighttpd supporta Ipv6, ha supporto per il virtual hosting ed una discreta disponibilità di moduli. Uno dei punti a sfavore di questo web server è la difficoltà nell’eseguire il porting delle regole di rewrite dal formato di Apache, ed in generale una sintassi dei file di configurazione di non immediata comprensione. Lighttpd può essere utilizzato in congiunzione con Fastcgi per servire la parte dinamica delle richieste indirizzate al web server.

Nginx, performance in salita

Nginx è utilizzato attualmente da milioni di siti web. E’ stato scritto nello specifico da Igor Sysoev per il sito Rambler.ru, uno dei più visitati di Russia.

L’architettura di Nginx prevede l’avvio di un processo padre, da cui possono avere origine un certo numero di processi figli, definiti nel file di configurazione (/etc/nginx/nginx.conf). Anche qui viene superato il problema del C10K.

Come Lighttpd, Nginx si distingue per i bassi consumi di memoria, e come testimoniano alcuni test, risulta essere più veloce di Ligttpd nel servire contenuti statici. Ngnix ha una sintassi di configurazione più leggibile e gestibile rispetto a Lighttpd ed è più amichevole anche la gestione ed il porting delle regole di rewrite da Apache.

La sintassi è molto chiara anche per quanto riguarda la gestione degli host virtuali. Curiosità : Nginx supporta il logging separato per ogni virtualhost, Lighttpd no. In Nginx il supporto Ipv6 è ancora in lavorazione.

Alcuni test di esempio eseguiti con il tool Siege evidenziano che : in presenza di 10 connessioni concorrenti, che persistono per la durata di 1 minuto Apache impegna un quantitativo di memoria pari a 40 MB. A parità di carico, Nginx impegna, per soddisfare lo stesso numero di richieste, 1MB.

Ancora, in presenza di 100 connessioni concorrenti,che persistono per la durata di 1 minuto, Apache impegna un quantitativo di memoria pari a 58 MB. A parità di carico, Nginx impegna,per soddisfare lo stesso numero di richieste, 10MB. Considerando la totale diversità di ambiente di esecuzione dei due demoni, ed il diverso modo di elaborazione degli script php, i risultati sono comunque eloquenti e propendono a favore di Nginx.

Anche Nginx trova largo utilizzo come reverse proxy, sostenendo Apache nella gestione di grossi carichi. Non è da trascurare l’utilizzo standalone di Nginx che in accoppiata con Fastcgi fa registrare ottimi risultati in termini di performance, di impatto sulla memoria (minimo) e di velocità nell’esecuzione delle richieste.

Conclusioni

In termini di performance sia Ngnix che Lighttpd surclassano ampiamente Apache. Gioca tuttavia in favore di quest’ultimo il fatto che compaia di default in un largo numero di installazioni, sia su pannelli di gestione hosting sia su sistemi bundle come LAMP (Apache + Php + Mysql).

Ngnix e Lighttpd sono molto adatti per ambienti vps caratterizzati da dotazioni di memoria limitate, su cui l’impatto di utilizzo delle risorse di un web server come Apache lascia poco spazio alle ottimizzazioni.

Uno degli svantaggi maggiori di Lighttpd e Nginx è rappresentato dal fatto che attualmente non possono essere integrati facilmente in pannelli di gestione hosting come Plesk o ISPconfig. A giudicare dalla quantità di installazioni presenti ed ai grandi risultati in termini di performance anche rispetto a Lighttpd, Nginx si candida ad essere l’alternativa più valida ad Apache. La scelta del proprio webserver è una operazione da fare valutando primariamente la propria infrastruttura hardware e i carichi gestiti, non ha senso per questo motivo complicare la gestione delle regole e delle risorse con sistemi diversi da Apache se non vi è una reale necessità o se bisogna poi ricorrere a dei workaround per il funzionamento di alcune piattaforme. 

Ha invece senso poter contare su un sistema molto veloce nel caso ci si trovi a servire dei picchi costanti di visite e richieste da parte degli utenti. 

Facci sapere cosa ne pensi!

Facci sapere cosa ne pensi!

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *