Fino a una decina di anni fa, quando si parlava di Open Source si faceva spesso riferimento a sistemi poco affidabili e che – per via dell’assenza di supporto specialistico (a pagamento) – era meglio non usare in produzione. In realtà era solo paura: paura dei produttori di software a pagamento di perdere importanti quote di mercato.
Fortunatamente, da allora, le cose sono cambiate radicalmente tant’è che molte aziende che prima temevano l’Open Source, ora lo considerano una risorsa fondamentale per il proprio business.
Oggi, infatti, oltre l’80% delle web applications (e dei siti web in generale) sono attestate su Web Servers Open Source:
Web Server | Percentuale di utilizzo |
Apache | 51,9% |
NGINX | 30,8% |
Microsoft IIS | 11,9% |
Litespeed | 2,4% |
Google Servers | 1,3% |
Apache Tomcat | 0,6% |
Node.js | 0,2% |
Lighthttpd | 0,1% |
Fonte: w3techs.com |
In questo articolo cerco di descrivere storia, tecnologia e caratteristiche principali dei Web Servers Open Source più diffusi al mondo.
Apache HTTP Server
Chiamato semplicemente httpd o Apache, fu rilasciato per la prima volta nel 1995. Dopo oltre un ventennio, con quasi il 52% di siti web serviti, è attualmente il Web Server più utilizzato al mondo.
Anche se Apache è impiegato nativamente su sistemi Linux, esso può anche essere installato su MacOS e Windows.
Questo Web Server utilizza un’architettura modulare, grazie alla quale è possibile estenderne le funzionalità come ad esempio:
mod_expires per aggiungere l’expire dei contenuti statici di un sito web
mod_rewrite per le regole di rewrite nel .htaccess
mod_proxy_balancer per il bilanciamento delle richieste http tra i vari Web Servers che compongono l’infrastruttura
A partire dalla versione 2.4 Apache supporta anche HTTP2, grazie al relativo modulo mod_http2.
NGINX
NGINX è stato sviluppato, a partire dal 2002, da Igor Sysoev. La sua prima release fu pubblicata nel 2004. NGINX è stato sviluppato per rispondere al cosiddetto problema C10K, che è l’abbreviazione di ” come si fa a progettare un web server in grado di gestire decine di migliaia di connessioni simultanee? ”
Con oltre il 30% (in crescita costante) dei siti web in esecuzione, NGINX rappresenta il secondo Web Server Open Source al mondo.
[adrotate banner=”1″]
NGINX si basa su un’architettura event-driven asincrona, per conseguire l’obiettivo di gestire tantissime sessioni simultanee. Infatti è diventato un web server molto popolare tra gli amministratori di sistema, grazie alla gestione ottimizzata delle risorse e la capacità di scalare facilmente.
NGINX è rilasciato sotto una licenza BSD-like e può essere distribuito non solo come web server, ma anche come reverse proxy e per load balancing.
Apache Tomcat
Apache Tomcat è un servlet container Java Open Source che funziona come un server web.
Un servlet Java è un programma Java che estende le funzionalità di un server.
Anche se i servlet sono in grado di rispondere a qualsiasi tipo di richiesta, essi vengono comunemente impiegati per gestire applicazioni ospitate sui Web Servers.
Tali servlet web sono la controparte Java ad altre tecnologie di contenuti web dinamici come PHP e ASP.NET.
Il core di Tomcat fu donato da Sun Microsystems alla Apache Software Foundation nel 1999, diventando così nel 2005 un progetto di primaria importanza.
Apache Tomcat, rilasciato sotto licenza Apache versione 2, viene in genere utilizzato per eseguire applicazioni Java.
Si può, tuttavia, tramite l’installazione di Coyote, impiegare anche come un normale server web.
Node.js
Node.js è un ambiente server-side JavaScript per applicazioni di rete come i server web. Ad oggi ha una piccola quota di mercato, pari allo 0,2% di tutti i siti web. Sviluppato originariamente nel 2009 da Ryan Dahl, il progetto Node.js è amministrato dalla Fondazione Node.js e coadiuvato dal Linux Foundation’s Collaborative Projects program.
La differenza tra Node.js e gli altri server web più popolari è che si tratta innanzitutto di un ambiente di runtime cross-platform per implementare applicazioni di rete. Node.js applica un’architettura event-driven in grado di gestire I/O asincrono. Queste scelte progettuali ottimizzano il throughput e la scalabilità nelle web applications, consentendo di implementare applicazioni veloci e leggere, oltre che browser games in tempo reale. Con Node.js c’è anche una certa differenza di tecnologie di sviluppo web, dove Node.js è chiaramente parte dello stack HTML, CSS e JavaScript , mentre Apache e Nginx sono parte di molti stack software diversi.
Node.js è rilasciato sotto un mix di licenze; ulteriori informazioni sono disponibili sul sito web del progetto.
Lighthttpd
Lighttpd – pronunciato ” lightly ” – vide il suo primo rilascio nel Marzo del 2003. Attualmente serve circa lo 0,1 % di tutti i siti web ed è distribuito sotto licenza BSD.
Lighttpd si distingue per la il suo basso utilizzo di memoria e della CPU, oltre che per la sua velocità. Esso utilizza un’architettura event-driven, è ottimizzato per un gran numero di connessioni parallele e supporta FastCGI, SCGI, Auth, URL rewriting e molte altre caratteristiche . Lighttpd è molto diffuso in ambienti con Framework Catalyst e Ruby on Rails.
E tu, quale Web Server prediligi? 🙂