NGINX vs Apache: un confronto tra i server web più diffusi

Internet, così come lo conosciamo oggi, ha iniziato la sua conquista all’inizio degli anni Novanta. Il 20 settembre 1990, presso il centro di ricerca nucleare CERN di Ginevra, è stato messo online il primo sito …

NGINX vs Apache: un confronto tra i server web più diffusi

  1. Rivista
  2. »
  3. Articolo
  4. »
  5. Internet
  6. »
  7. NGINX vs Apache: un confronto tra i server web più diffusi

Internet, così come lo conosciamo oggi, ha iniziato la sua conquista all’inizio degli anni Novanta. Il 20 settembre 1990, presso il centro di ricerca nucleare CERN di Ginevra, è stato messo online il primo sito web al mondo, che ha segnato anche la nascita del World Wide Web. In linea di principio, i siti web non sono altro che documenti HTML. Per fornire ai visitatori diverse pagine web, l’host ha bisogno di un software server. Questo elabora le richieste e le analizza per poi restituire al browser i documenti richiesti. Due dei programmi più diffusi di questo tipo sono NGINX e Apache. In questo confronto presentiamo in dettaglio i due server web e le loro caratteristiche e mostriamo quale di essi è più adatto per quali scopi.

Qual è la differenza tra un server web e un application server?

Il compito di un server web è quello di stabilire una connessione tra un server fisico o cloud e le pagine web memorizzate (o i browser) degli utenti di Internet. L’application server, invece, è responsabile di rendere disponibili le applicazioni all’interno di una rete.

Sia NGINX che il server web Apache sono adatti a gestire richieste dinamiche?

No, a differenza del server web Apache, NGINX supporta solo la distribuzione di contenuti statici. I contenuti dinamici, invece, vengono trasmessi ad altri software.

I due server web possono essere utilizzati anche in combinazione?

Sì, funziona molto bene. In pratica, nella maggior parte dei casi si trova la combinazione di NGINX come reverse proxy e uno o più server Apache nel backend.

1. apache: flexibilist popolare

Il server web open-source Apache è sul mercato dal 1995 e, secondo w3techs.com, è il server web più utilizzato in assoluto. Grazie alla sua lunga storia, all’ampia documentazione e alle opzioni di distribuzione flessibili, il server web è molto popolare tra gli amministratori. Tuttavia, l’enorme quota di mercato è dovuta principalmente al fatto che molti sistemi (ad esempio, i CMS) funzionano con Apache in modo immediato. Inoltre, è preinstallato su tutte le più importanti distribuzioni Linux come Red Hat, CentOS o Ubuntu.

Buono a sapersi: dal 1999, la Apache Software Foundation è responsabile dell’ulteriore sviluppo del server web.

Il server web Apache viene configurato con l’aiuto di un file .htaccess. Ciò consente un elevato grado di flessibilità nell’elaborazione delle richieste in arrivo. Ad esempio, è possibile definire i limiti di memoria e le restrizioni al caricamento dei file, impostare le regole di reindirizzamento o la protezione delle directory (htpasswd) o effettuare varie impostazioni di sicurezza per la gestione dei cookie.

Uno dei maggiori vantaggi di Apache, tuttavia, è sicuramente la possibilità di assegnare a ogni livello o directory dell’albero il proprio file .htaccess con una configurazione individuale. Questo permette ai fornitori di hosting condiviso, ad esempio, di offrire ai propri clienti un’opzione di configurazione per il loro sito web su una stessa macchina senza influenzare gli altri utenti. Se un utente effettua un’impostazione per il suo ambiente dedicato, la configurazione globale del server rimane inalterata.

1.1 I moduli ampliano le funzionalità del server web

Grazie al sistema di moduli dinamici (che esiste anche sotto forma di NGINX), è possibile estendere ulteriormente le funzionalità di Apache. È possibile installare i moduli anche dopo aver configurato e messo in funzione il server web Apache e attivarli o disattivarli a seconda delle necessità. Un elenco ufficiale di tutti i moduli che fanno parte della distribuzione standard di Apache è disponibile qui.

Suggerimento: nelle distribuzioni Linux basate su Debian, i moduli possono essere attivati o disattivati senza modificare i file di configurazione tramite i comandi a2enmod e a2dismod .

1.2 NGINX vs Apache: la sofferenza delle prestazioni

Performance Benchmark NGINX vs Apache
Il server web Apache è stato costantemente migliorato e le sue prestazioni ottimizzate nel tempo. Tuttavia, non è neanche lontanamente paragonabile alle prestazioni di NGINX
.

Uno dei principali punti deboli di Apache sono le sue prestazioni. Mentre il server web funziona ancora in modo affidabile e stabile per i siti web più piccoli, vacilla regolarmente con un numero crescente di richieste simultanee. Ciò è dovuto principalmente al fatto che per ogni connessione aperta al server web viene avviato un processo separato, che occupa memoria di lavoro. Ciò significa che centinaia o migliaia di richieste parallele si traducono logicamente in altrettanti processi. Questi aumentano drasticamente i tempi di caricamento delle pagine e, nel peggiore dei casi, possono addirittura portare a un blocco completo del server web.

Il server web Apache è stato costantemente migliorato nel tempo e le sue prestazioni sono state ottimizzate. Tuttavia, non è in grado di tenere il passo con un NGINX “out-of-the-box”.

2 NGINX: leggero ad alte prestazioni

NGINX è stato rilasciato solo nel 2004 ed è stato sviluppato fin dall’inizio con un’attenzione particolare alle prestazioni, al server principale e alle funzioni proxy. Il server web offre vantaggi decisivi rispetto ad Apache, soprattutto su sistemi limitati, perché si basa su un’architettura asincrona e basata sugli eventi. Ciò significa che non viene avviato un processo separato per ogni connessione, ma possono essere gestite anche diverse migliaia di connessioni per processo. In questo modo, NGINX è in grado di gestire un numero elevato di richieste simultanee senza perdere velocità e stabilità. Il consumo di risorse rimane relativamente costante anche durante i picchi di carico, il che significa che le pagine ad alta intensità di prestazioni con un gran numero di accessi possono essere fornite anche con un hardware limitato (ad esempio, su un Raspberry Pi).

2.1 Il contenuto dinamico non è supportato

NGINX può anche essere esteso da moduli. Tuttavia, questi devono essere compilati nel sistema, poiché il caricamento dinamico non è possibile come nel caso di Apache. Inoltre, a differenza di Apache, NGINX supporta solo la distribuzione di contenuti statici, come immagini, fogli di stile CSS o JavaScript, e non offre nemmeno la possibilità di integrare gli interpreti corrispondenti tramite moduli. Per i contenuti dinamici (ad esempio, script PHP, Python o Perl), le richieste vengono inoltrate a un altro software (ad esempio, nel caso di PHP, all’interprete corrispondente).

Inoltre, non sono supportate le regolazioni della configurazione a livello di directory (tramite .htaccess), il che rende l’impostazione di un server web NGINX generalmente un po’ più complessa rispetto ad Apache. Tuttavia, questo è importante solo se si vuole affrontare l’amministrazione del server in modo dettagliato. I fornitori di hosting che hanno NGINX nel loro portafoglio di solito hanno i moduli appropriati per i compiti più comuni.

3 NGINX e Apache come rete

Wordpress unter Windows durch Lupe betrachtet
Soprattutto in ambiente WordPress, la combinazione di un reverse proxy NGINX e di uno o più server backend Apache è molto comune.

Per beneficiare dei vantaggi di entrambi i mondi, è possibile utilizzare NGINX e Apache in combinazione. Ad esempio, mentre NGINX è particolarmente adatto come reverse proxy, Apache è utilizzato principalmente come server backend per la gestione di contenuti dinamici.

In pratica, il server NGINX è collegato a uno o (come bilanciatore di carico) più server Apache. Le connessioni in entrata vanno quindi prima a NGINX, che si occupa di fornire i contenuti statici. Per i contenuti dinamici, invece, la richiesta viene inoltrata al server Apache, che in questo contesto può anche ricorrere al suo file .htaccess.

Conclusione: Apache o NGINX?

Non esiste una risposta generale alla domanda su quale sia il server web migliore. Infatti, mentre NGINX è molto più avanti di Apache in termini di prestazioni, quest’ultimo è in vantaggio quando si tratta di gestire contenuti dinamici. Alla fine, la decisione dipende sempre dai requisiti individuali del progetto web. In pratica, molti utenti si affidano anche a una rete per beneficiare dei punti di forza di entrambi i server web.

Buono a sapersi: La comunità Internet “Stack Overflow” è un buon posto dove andare per sviluppatori e amministratori. Infatti, non solo troverete le risposte alla maggior parte delle domande sul tema dei server web, ma anche numerose istruzioni, tutorial e note di supporto sulla configurazione e l’utilizzo di Apache, NGINX e delle loro alternative. Queste ultime includono, ad esempio, il server web gratuito Lighttpd o il server open source HTTP / 2 Caddy.

I vantaggi e gli svantaggi dei due server web sono riassunti anche nel video seguente:

Articoli correlati