Showdown lato server: Apache vs NGINX
Pubblicato: 2020-10-01I server Web sono al centro di Internet. Senza software per server Web come Apache e NGINX, il Web non sarebbe come quello che vediamo oggi. Tuttavia, non sono intercambiabili. Per sapere quale di queste due opzioni – Apache vs NGINX – è la migliore per te, devi capire come funzionano.
In questo articolo parleremo di cosa sono i server web e come funzionano e introdurremo sia Apache che NGINX. Quindi confronteremo Apache vs NGINX in termini di differenze chiave e esamineremo i loro pro e contro.
Arriviamo ad esso!
Che cos'è un server Web?
In poche parole, un server web è un computer dedicato all'esecuzione di software server come Apache o NGINX. Un server Web memorizza i file del sito e può elaborare le richieste in arrivo per accedervi.
È il software del server web che è responsabile di quest'ultimo compito, che è una responsabilità importante. Per i siti Web più diffusi, il software che utilizzi potrebbe dover gestire un numero enorme di richieste in un breve lasso di tempo, quindi deve essere all'altezza del compito. Sia NGINX che Apache sono in grado di scalare e gestire un gran numero di richieste. Tuttavia, il modo in cui funzionano entrambe le opzioni del server è diverso a livello di base.
Il software del server Web funziona insieme a diversi altri componenti per servire siti Web e applicazioni moderni. Ad esempio, per configurare WordPress su un server sono necessari i seguenti componenti:
- Server Web con supporto HTTPS: può essere Apache, NGINX o poche altre opzioni.
- PHP: WordPress è basato sul linguaggio PHP, quindi è necessario per eseguire il Content Management System (CMS).
- Software database: può essere MySQL o MariaDB.
Per questo articolo, ci concentreremo solo sul software del server web. Tuttavia, è importante capire che il software non funziona nel vuoto. In alcuni casi, puoi persino configurare server Web come Apache e NGINX per lavorare insieme . Un modo in cui i siti Web possono farlo è configurare NGINX in modo che funzioni come proxy inverso mentre si utilizza Apache come software del server principale. Le applicazioni a vostra disposizione sono chiaramente varie e abbondanti.
Introduzione ad Apache

Per molto tempo, Apache è stata l'opzione server Web predefinita per la maggior parte dei siti. Il software esiste dal 1995, quando Robert McCool ha introdotto Apache HTTP Server. Alcuni anni dopo, l'Apache Software Foundation ha rilevato la manutenzione e Apache è diventato un software open source.
Apache ha ottenuto enormi quantità di popolarità perché è stato installato insieme a diverse importanti distribuzioni Linux. Quando si tratta di server Web, la prevalenza di Linux ha reso Apache la scelta di fatto per anni.
Il nome Apache è così radicato in Linux che il sistema operativo (OS) utilizza il comando httpd per il suo processo server (qualcosa che si trova all'interno di Apache stesso). Tuttavia, Apache non è l'unico grande nome quando si tratta di server web.
Introduzione a NGINX

NGINX è stato progettato da Igor Sysoev per essere in grado di gestire il cosiddetto "problema C10K". Si tratta di ottimizzare una rete per essere in grado di gestire fino a 10K connessioni simultanee. In altre parole, NGINX è stato creato pensando alla massima scalabilità.
Il software open source è stato rilasciato nel 2004 e ora sono disponibili due tipi di licenza. Hai la versione open source e NGINX Plus, che è una soluzione aziendale che include supporto professionale e altre funzionalità.
Nella sua infanzia, la maggior parte dei siti Web utilizzava NGINX per gestire solo richieste statiche a causa della sua difficoltà di installazione percepita rispetto ad Apache. Tuttavia, la quota di mercato di NGINX è cresciuta costantemente nel corso degli anni.
Secondo alcuni sondaggi, NGINX ha superato Apache come il software per server Web più popolare al mondo. Altri numeri lo mettono proprio alle calcagna di Apache:

Fonte immagine: W3Techs.
Ciò che è vero è che NGINX è molto più popolare di Apache tra i siti Web più popolari sul web. Questo perché NGINX ha un vantaggio innegabile quando si tratta di scalabilità, che è la chiave per i siti che ricevono enormi quantità di traffico.
Inoltre, NGINX può eseguire il "doppio compito" come proxy inverso o bilanciatore del carico, se non si desidera utilizzarlo come server web. In altre parole, può svolgere molti più ruoli rispetto a Apache.
Tuttavia, questo non vuol dire che NGINX dovrebbe essere la tua scelta predefinita se stai pensando di cambiare server. Nelle prossime sezioni, analizzeremo ciò che rende unico ogni software.
Apache vs NGINX: 3 differenze chiave
Prima di poter parlare di quale soluzione server è l'opzione migliore per te, dobbiamo analizzare ciò che li rende diversi. Iniziamo parlando della gestione delle richieste relative ad Apache vs NGINX.
1. Gestione delle richieste
Attenzione: qui le cose si fanno un po' più tecniche. Apache usa quelli che chiama moduli multi-processing (MPM) per gestire le connessioni. Il software consente di scegliere tra tre tipi di MPM:
- mpm-prefork : questo modulo crea processi a thread singolo per gestire ogni richiesta. Ogni “figlio”, a sua volta, può gestire una sola connessione.
- mpm_worker : questo modulo può avviare processi multi-thread, con ogni thread in grado di gestire una connessione.
- mpm_event : per la maggior parte, questo modulo funziona come mpm_worker , ma è ottimizzato per mantenere attive le connessioni.
Un aspetto unico di Apache è che ti consente di scegliere quale modulo vuoi usare e scambiarli quando necessario. Per impostazione predefinita, Apache utilizza il modulo mpm-prefork , che funziona alla grande per un numero ridotto di connessioni simultanee. Il modulo mpm_worker è migliore quando si tratta di ridimensionamento, ma richiede risorse server aggiuntive.

Al contrario, NGINX utilizza quello che definisce un approccio "guidato dagli eventi". Il software utilizza processi multi-thread, con ogni thread in grado di gestire più connessioni.
Inoltre, NGINX gestisce le richieste in entrata in modo asincrono. In poche parole, questo significa che NGINX può gestire più richieste con meno risorse del server, rendendolo più efficiente in questo particolare aspetto.
2. Configurazione del server
Apache utilizza i file .htaccess per impostare regole specifiche su come gestisce le richieste in entrata. Questi file includono tutto, dalle regole di reindirizzamento ai limiti di memoria e altro ancora.
Usando Apache, puoi impostare file .htaccess individuali per ogni directory nell'albero del tuo server. Per farti un esempio, se configuri un server condiviso puoi consentire a ciascun sito Web ospitato su di esso di impostare i propri file .htaccess .
Lo svantaggio di questo alto livello di flessibilità è che ogni file .htaccess che incontri lungo un percorso di richiesta deve essere interpretato separatamente. Ciò significa che le richieste possono richiedere più tempo per l'esecuzione.
NGINX non offre lo stesso livello di flessibilità quando si tratta di configurazione. Invece di file di configurazione a livello diretto, hai un file principale che governa l'intera cosa.
3. Moduli
I moduli sono componenti aggiuntivi che puoi utilizzare insieme al software del tuo server preferito per estenderne le funzionalità predefinite. Considerando l'età e la popolarità di Apache, non dovrebbe sorprendere che abbia un vantaggio su NGINX quando si tratta di selezione dei moduli.
Non solo Apache offre più moduli, ma tende ad essere più facile trovare documentazione e tutorial su come usarli. Inoltre, Apache ti consente di installare, abilitare e disabilitare i moduli a piacimento, fornendoti un alto grado di flessibilità.
NGINX non offre lo stesso vantaggio. Per utilizzare i moduli, è necessario compilarli nel core di NGINX. Inoltre, non puoi disabilitare i moduli una volta compilati, rendendo molto più difficile lo scambio di opzioni.
È importante notare che NGINX Plus include una funzione di modulo dinamico che consente di disabilitare e abilitare i moduli a piacimento. Tuttavia, anche con Plus, è comunque necessario compilare quei moduli con il core NGINX prima di poterli utilizzare.
Sebbene la libreria di moduli e la documentazione di NGINX stiano crescendo a un ritmo costante, non possono ancora eguagliare Apache in termini di volume. Considerando come NGINX continua a guadagnare quote di mercato, tuttavia, questo probabilmente cambierà nel prossimo futuro.
I pro e i contro di Apache vs NGINX
Ormai, capisci le differenze fondamentali tra Apache e NGINX. Diamo ora una breve analisi dei pro e dei contro di ciascun software.
Apache
Per cominciare, parliamo dei principali vantaggi dell'utilizzo di Apache:
- Può essere più facile da impostare e configurare
- Ottieni un controllo più granulare sulla configurazione del tuo server grazie ai file .htaccess
- La selezione del modulo è migliore e puoi abilitare e disabilitare i moduli a piacimento
- Puoi decidere come gestire le richieste utilizzando diversi moduli
Lo svantaggio principale dell'utilizzo di Apache vs NGINX è che quest'ultimo si ridimensiona semplicemente meglio. Se sei ancora nella fase di crescita del tuo sito web, Apache dovrebbe essere più che sufficiente per gestire il traffico.
Tuttavia, a un certo punto potresti dover prendere in considerazione l'aggiornamento del tuo stack del server se il tuo sito ha un enorme successo. Questo potrebbe significare passare a NGINX o usarlo come proxy inverso per il tuo server web Apache.
NGINX
NGINX ha due chiari vantaggi quando si tratta di Apache: prestazioni e scalabilità. Per essere più specifici, NGINX è migliore quando si tratta di:
- Gestire un numero enorme di richieste simultanee
- Ottenere prestazioni migliori con meno risorse hardware
- Servire contenuti statici più velocemente
Quest'ultima parte è il motivo per cui così tante persone scelgono di utilizzare NGINX come soluzione di proxy inverso. Nonostante tutti i suoi vantaggi relativi alle prestazioni, NGINX non è privo di difetti.
Sebbene avere un singolo file di configurazione si traduca in tempi di richiesta ridotti, significa anche che NGINX è meno flessibile di Apache. Questo vale anche per i moduli, poiché la versione open source di NGINX ti costringe a compilare moduli per usarli e non puoi disabilitarli. In pratica, questo significa che l'impostazione di NGINX in modo che funzioni come necessario può essere molto più complessa rispetto all'utilizzo di Apache.
Il motivo principale per utilizzare NGINX è se le prestazioni sono la tua preoccupazione principale. Ad un certo punto, i siti Web più diffusi devono tirare fuori i pezzi grossi per gestire un traffico enorme senza tempi di inattività, lunghi tempi di caricamento e altro ancora. Inoltre, poiché NGINX può consentire di ottenere risultati di prestazioni migliori con meno risorse hardware, può essere un'opzione più conveniente.
Conclusione
Cambiare server o software server è sempre una decisione importante. Pertanto, idealmente vorrai utilizzare la soluzione server con cui rimarrai a lungo termine.
La scelta tra Apache e NGINX non è così chiara come potrebbe sembrare. In molti casi, la decisione non spetterà a te poiché il tuo host web deciderà quale software utilizzare. A livello pratico, dovrai fare le tue ricerche e scoprire quale opzione utilizza un host web prima di impegnarti con loro.
Hai domande su come scegliere tra Apache e NGINX? Parliamo di loro nella sezione commenti qui sotto!
Immagine in miniatura dell'articolo di ProStockStudio / shutterstock.com
