Server Apache vs Nginx: informazioni dettagliate su questi due tipi di server
Pubblicato: 2022-01-03Internet funziona su una raccolta di server. Tuttavia, questi hanno una configurazione diversa rispetto a una macchina desktop standard. Un amministratore di sistema esperto o uno sviluppatore back-end ottimizzerà questa scelta in base alle proprie esigenze. Il modo principale per farlo è attraverso una scelta di software server. Un confronto popolare in quest'area è Apache vs Nginx.
Questo per una serie di motivi, ma i numeri di utilizzo e la longevità sono due dei principali. Nginx è più recente e probabilmente più capace per i moderni standard web. Tuttavia, anche Apache non tira pugni ed è altrettanto in grado di servire siti Web a milioni di utenti in tutto il mondo.
In questo post, ti faremo un confronto tra Apache e Nginx. Esamineremo elementi a livello di superficie come la popolarità di entrambi i tipi di server. Tuttavia, analizzeremo anche le caratteristiche tecniche e le considerazioni per ciascuno. Alla fine, conoscerai i dettagli di entrambi i tipi di software e qual è il migliore per il tuo server.
Cosa sono Apache e Nginx
Leggere questo articolo significa probabilmente capire che un server Web richiede un software specializzato per fornire prestazioni ottimali. Sebbene questo pezzo non tratterà ciò che il software server è o fa in senso generale, tratteremo due delle soluzioni principali per il tuo server:
- Apache. Questo è un software gratuito e open source che viene preinstallato con la maggior parte delle "distribuzioni" Linux. È in circolazione dal 1995 e, grazie a questi due fattori, ha una posizione quasi leader nel mercato.
- Nginx. Sebbene sia un bambino relativo rispetto ad altri software server, Nginx ha molti utenti. Al momento della stesura, è quasi il primo con Apache per il software server più popolare (ne parleremo più avanti).
Vale la pena notare che Apache è stato leader nel software per server per decenni e ha visto un'ampia quota di mercato per quel momento. Tuttavia, Nginx è ora il favorito, anche se non di molto.

DIDASCALIA: La linea blu qui da google Trends rappresenta le ricerche di Apache dal 2004, mentre la linea rossa si riferisce a Nginx.
Per quanto riguarda ciò che Apache e Nginx portano in tavola, questo potrebbe riempire diversi libri sull'argomento. Tuttavia, cercheremo di farlo in meno di 2.000 parole, a partire dal set di funzionalità generali di entrambi.
Le caratteristiche generali di Apache e Nginx
Poiché Apache e Nginx sono entrambi software per server Web HTTP, troverai molte somiglianze. Ad esempio, sono entrambi open source, il che significa che funzioneranno su una varietà di sistemi. Per estensione, entrambi sono flessibili ed estensibili, ma ci sono obiettivi diversi per ogni tipo di server.
Tuttavia, Apache vs Nginx non è un vero confronto, in quanto entrambi i software si avvicinano al processo di configurazione di un server Web in un modo diverso. In realtà, entrambi si adatteranno meglio a diverse applicazioni.
Nel resto di questo articolo, te lo mostreremo attraverso un'analisi dei dettagli tecnici per Apache e Nginx. Ecco cosa tratteremo:
- Un'analisi tecnica di ciascun tipo di software del server, che include la gestione delle richieste e delle connessioni, le tecnologie di memorizzazione nella cache e altro ancora.
- Configurazione ed estensione di Apache, inclusi i dettagli sul suo file e moduli
.htaccess
. - Come configuri Nginx e la sua estensibilità.
Questo non sembra molto da considerare, ma puoi decomprimere ciascuno in una serie di altre sottosezioni. Faremo esattamente questo, a partire dalle differenze tecniche.
Le differenze tecniche tra Apache e Nginx
In senso generale, Apache e Nginx prendono percorsi quasi unici ed esclusivi per raggiungere lo stesso obiettivo di un server web ottimale. Se li confronti in modo ampio, vedrai quanto sono diversi:
- Apache utilizza un'architettura "guidata dai processi", mentre Nginx ne utilizza una "guidata dagli eventi".
- Mentre entrambi i tipi server file statici (anche se in un modo diverso), Nginx non server contenuto dinamico.
- Ogni tipo di software interpreta le richieste HTTP in un modo core diverso.
Esamineremo alcuni di questi aspetti, a partire dalle considerazioni sulla gestione della connessione.
Gestione della connessione
Scoprirai che Apache vs Nginx attribuisce molta importanza al modo in cui ogni tipo gestisce connessioni e richieste. Ad esempio, Apache utilizza un approccio basato sul processo, in cui creerà una nuova richiesta per ogni thread utilizzando un modulo di elaborazione chiamato mpm_prefork
. Questo può essere veloce se il numero di richieste è inferiore al numero di processi, ma in seguito si verifica un calo delle prestazioni.
In effetti, Apache offre molta flessibilità per la creazione di un algoritmo di gestione della connessione adatto alle proprie esigenze utilizzando mpm_prefork
, mpm_worker
e mpm_event
. Al contrario, il design di Nginx è tale da cercare di mitigare gli aspetti negativi delle prestazioni di Apache.
Lo fa attraverso il modo in cui genera i processi di lavoro in base agli eventi. Ciò significa che Nginx è ottimo per il ridimensionamento, poiché può gestire più richieste all'interno di un singolo thread.
Richiedi Interpretazione
Sia Apache che Nginx adottano anche un approccio diverso per interpretare le richieste che un server riceverà. Ad esempio, Nginx utilizza l'URI (Uniform Resource Identifier) di una richiesta per tradurla in un elemento fisico del filesystem.
Puoi vederlo nel formato di alcuni dei blocchi di configurazione, come server
e location
. Lavorano insieme per analizzare un URI e trasformarlo in qualcosa all'interno del filesystem.
server { listen 80; server_name example.org www.example.org; root /data/www; location / { index index.html index.php; } location ~* \.(gif|jpg|png)$ { expires 30d; } location ~ \.php$ { fastcgi_pass localhost:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
Al contrario, le radici di Apache come software per server web "puro" significano che presuppone e agisce sulla base del fatto che ogni richiesta è una risorsa nel filesystem. Tuttavia, Apache può funzionare anche con URI in cui la richiesta è più astratta. Nonostante ciò, la documentazione mette in guardia contro l'utilizzo di qualcosa di diverso dal metodo basato su file.
Performance statiche e dinamiche
Quando si tratta di prestazioni, Apache vs Nginx è una considerazione importante per quasi tutti gli utenti. Nel contesto, il confronto si riduce al modo in cui ogni tipo di software serve contenuto statico e dinamico.
Poiché l'architettura intrinseca di Apache funziona con il filesystem in modo diretto, è ottima per servire contenuto statico. Tuttavia, elaborerà anche il contenuto dinamico all'interno del server, che è un'implementazione simile che è anche flessibile se è necessario sostituire i moduli in base ai requisiti che si hanno.

In confronto, Nginx non elabora alcun contenuto dinamico. È più complicato, perché Nginx deve trasmettere queste richieste a un lavoratore o protocollo esterno. Anche così, scoprirai che c'è meno sovraccarico delle prestazioni e Nginx può utilizzare altri protocolli con una maggiore adattabilità.
Per il contenuto statico, questo può essere semplice come Apache e in alcuni casi un'opzione con prestazioni migliori. Questo perché Nginx può contattare l'interprete quando necessario, piuttosto che essere una parte intrinseca delle prestazioni complessive del software del server.
Modello di configurazione distribuita di Apache
Non sorprende che Apache e Nginx abbiano entrambi un approccio diverso alla configurazione del server. In breve, la configurazione di Apache vs Nginx si basa sulla possibilità di farlo a livello di directory.
Apache utilizza un modello distribuito, il che significa che puoi configurare il server in base alla directory. Lo farai tramite file .htaccess
. Apache verificherà ogni componente del percorso del file richiesto per un file .htaccess
ed eseguirà le direttive all'interno.

A nostro avviso, un file .htaccess
è molto più flessibile di qualsiasi altro sistema. È veloce da trovare, aprire e modificare. Il potere a tua disposizione per eseguire molte azioni potenti è grandioso. Scoprirai anche che un server Apache elaborerà un file .htaccess
ogni volta che ne scopre uno, senza la necessità di ricaricare il server.
È anche fantastico se devi consentire ad alcuni utenti di controllare aspetti dei loro siti che influiscono sull'intera configurazione del server. Questo è il motivo per cui i server Apache sono un pilastro delle piattaforme di hosting condiviso, insieme al suo sistema di moduli flessibili.
Moduli di Apache
Puoi caricare e scaricare moduli su base dinamica usando Apache. È come usare plugin e temi all'interno di WordPress: la funzionalità principale di Apache esegue i passaggi fondamentali, mentre i moduli attivi ti aiutano a creare un'esperienza unica.
Questi moduli possono coprire molto terreno e ce ne sono molti disponibili. Moduli come mod_php
possono modificare le funzionalità principali del server, mentre il popolare mod_rewrite
ti consente di svolgere molte altre attività:
- Limitazione degli indirizzi IP.
- Modifica della cartella Inizio per il tuo sito.
- Esecuzione di reindirizzamenti 301.
- Impostazione di una home page predefinita.
Tra .htaccess
e il sistema di moduli dinamici, Apache rappresenta un modo chiaro per la maggior parte degli utenti di armeggiare e ottimizzare un server web e un sito.
Il modello di configurazione centralizzata di Nginx
Nginx adotta un approccio centralizzato alla configurazione del server. Ciò significa che esiste un file di configurazione (che termina con un'estensione .conf
). A volte è difficile da trovare a seconda della struttura del server.
Ciò presenta alcuni chiari svantaggi per il proprietario di un sito in erba che desidera apportare modifiche a un server. Per i siti su hosting condiviso, è quasi impossibile configurare il server. C'è anche molta meno flessibilità.
Tuttavia, ci sono anche alcuni vantaggi, basati sulle prestazioni. Poiché Nginx ha solo una posizione per un file di configurazione e Apache potrebbe potenzialmente utilizzare più posizioni, ci sarà solo una ricerca. Per estensione, ci sarà un minor impatto sulle prestazioni per individuare anche quel file di configurazione.
Scoprirai inoltre che, poiché la configurazione è centrale, i proprietari dei siti non avranno la responsabilità di gestire gli aspetti relativi alla sicurezza. Questo è un altro vantaggio per l'approccio di Nginx, perché la responsabilità della sicurezza ricade solo sulle spalle dell'amministratore di sistema.
I moduli di Nginx
È giusto dire che il sistema di moduli di Nginx non è affatto permissivo o flessibile come Apache, nonostante offra lo stesso tipo di funzionalità. Ad esempio, prendi le regole di reindirizzamento di Nginx:
server { listen 80; server_name www.olddomain.com; return 301 $scheme://www.newdomain.com$request_uri; }
Questo perché non puoi caricarli come elementi dinamici con Nginx. Per tornare alla nostra analogia con WordPress, è come dover reinstallare l'intero sito per disattivare un plug-in.
In superficie, questo non sembra praticabile e sembra essere un enorme danno. Tuttavia, ciò che ti manca in termini di flessibilità, guadagni in stabilità e funzionalità di base. Se sai di cosa ha bisogno il tuo server in fase di compilazione, puoi includere tutti quei componenti e moduli.
C'è anche un aspetto di sicurezza da considerare. Poiché non scambierai moduli dinamici dentro e fuori dal tuo sistema, saprai cosa fa e cosa può fare ogni elemento. Rende la struttura e l'architettura del tuo server chiare e facili da mantenere, oltre che più performanti.
Perché dovresti usare Apache o Nginx
Per riassumere, Apache vs Nginx non è una decisione netta. Tanto per cominciare, l'opinione tipica che Nginx abbia prestazioni migliori di Apache è fuorviante. Se configuri bene un server Apache, è altrettanto performante di un server Nginx equivalente.
Apache è ottimo per servire contenuti sia statici che dinamici in modo semplice. Offre un'immensa potenza per chi non conosce la gestione di un server, flessibilità nella configurazione. In senso generale, avrai bisogno di meno conoscenze tecniche per configurare un server Apache rispetto a Nginx.
Tuttavia, le prestazioni sono dove brilla Nginx. La configurazione della sua architettura assicura che possa ottenere di più per ciclo del processore rispetto a un server Apache. Questo nonostante una minore flessibilità nella configurazione.
In alcuni casi, potresti non avere la possibilità di scegliere tra Apache e Nginx, specialmente se utilizzi un host condiviso. Tuttavia, se lo fai, la scelta dipenderà dalle tue competenze, obiettivi e bisogni.
Sommario
La tua scelta del software del server è importante e hai una miriade di opzioni a tua disposizione. In realtà, non sceglierai un tipo di server dal campo di sinistra. Invece, sceglierai spesso tra due o tre tipi. Apache vs Nginx è un confronto spesso considerato, perché entrambi offrono prestazioni e affidabilità eccezionali a lungo termine.
Questo articolo ha esaminato il confronto tra Apache e Nginx su questi due fronti e altro ancora. Ci sono tutta una serie di considerazioni tecniche su cui riflettere, e questo influirà sulla tua scelta più di quanto sia popolare un particolare software per server tra la comunità.
Hai un'opinione su Apache vs Nginx? Condividi i tuoi pensieri con noi nella sezione commenti qui sotto!