Nginx vs Apache: qual è il miglior server Web? (2023)
Sebbene esistano molti tipi diversi di software per server, spesso ridurrai i contendenti a Nginx vs Apache. Questo perché entrambi offrono le massime prestazioni per molte diverse configurazioni di server e si adattano a determinate applicazioni meglio di altre.
Anche così, vorrai comunque considerare quale di questi ha più senso per le tue esigenze. Ci sono alcune categorie diverse da esaminare, come il supporto del sistema operativo (OS), la sicurezza, la documentazione e (ovviamente) le prestazioni.
Per questo post, confronteremo Nginx vs Apache in diverse aree. Alla fine, riassumeremo i nostri risultati e ti forniremo le informazioni necessarie per scegliere l’opzione giusta.
Presentazione di Nginx e Apache
Prima di entrare nei dettagli approfonditi di ciascun tipo di server, diamo un riassunto sia su Nginx che su Apache. Una volta arrivati alla sezione successiva, imparerai alcuni dei casi d’uso di entrambi e dove potresti vederli “allo stato brado”.
Nginx

Rispetto ad Apache, Nginx (pronunciato “motore X”) è relativamente nuovo nel mondo della tecnologia lato server. Tuttavia, il team di sviluppo si è assunto il compito di espandere i limiti dei sistemi Apache.
È una soluzione open source che molti utenti considerano per la sua stabilità e scalabilità. Ciò è (in parte) dovuto alla sua architettura guidata dagli eventi, di cui parleremo più avanti. In effetti, parte dell’obiettivo per la versione iniziale di Nginx era riuscire a farlo gestire 10.000 connessioni subito. Questo è qualcosa che era necessario nel 2004, a causa della rapida espansione del web in quel momento.
Nel complesso, gli amministratori di sistema e i proprietari di siti apprezzano Nginx perché è performante, funziona alla grande con i file statici e svolge le funzioni di un bilanciamento del carico e di un “proxy inverso”. Questi sono tutti rilevanti per il tempo di attività, la velocità e la sicurezza.
Apache

Apache è in qualche modo il “vecchio” della tecnologia dei server web. È vecchio quasi quanto il Web stesso: dal 1995 Apache è stato il software alla base di migliaia, se non milioni, di server.
Per molto tempo, Apache è stata una tecnologia dominante tra gli “amministratori di sistema”. Ci sono molte ragioni per questo: alcune legate alle prestazioni e altre forzate dall’abitudine. Indipendentemente da ciò, i server Apache vedono un sacco di utilizzo dove le configurazioni contano.
Troverai Apache come software preinstallato su tutte le distribuzioni Linux, quindi è una soluzione ideale per quel sistema operativo. Tuttavia, sebbene utilizzi un’architettura diversa da Nginx, offre comunque potenza, scalabilità e documentazione fantastica.
A molti amministratori di sistema piace anche la natura personalizzabile di Apache e il modo in cui puoi personalizzare un server caricando vari moduli.
I casi d’uso generali per Nginx vs Apache
È giusto dire che Apache è un “tuttofare” quando si tratta di servire siti web. Tuttavia, questa è una benedizione mista. Sì, i server Apache possono fare quasi tutto ciò che Nginx può fare, ma è a scapito di un codice meno performante. L’età è un fattore qui.
Poiché Apache è arrivato in un momento precedente ad alcune delle applicazioni più avanzate per i server Web, la base di codice non poteva fare ciò di cui aveva bisogno per servire i siti Web moderni. Sebbene questi problemi non siano necessariamente motivo di preoccupazione adessouna soluzione come Nginx funziona pensando al Web moderno.
Pertanto, scoprirai che Apache è fantastico come server facile da configurare per applicazioni come l’hosting condiviso. Le sue integrazioni lo vedono anche utilizzato come software server di sviluppo locale, come parte di Linux, Apache, MySQLe PHP (LAMPADA) pila.

Al contrario, Nginx ha una base software più matura, con una maggiore razionalizzazione rispetto ad Apache. Va bene dove stabilità e sicurezza sono elementi chiave, fondamentali. Scoprirai che un server Nginx non è configurabile come altri tipi e questo significa che accederai meno al suo core.
Inoltre, non è modulare come Apache, il che lo rende meno adatto a situazioni in cui è necessario eseguire la personalizzazione del server.
Nginx vs Apache: quanto è popolare ogni tipo di server
Per molto tempo, il software del server è stato simile a una corsa di cavalli. Apache funzionava come a forza dominante per un certo numero di anni e detiene ancora un’enorme quota di mercato. Per questo motivo, scoprirai che ci sono molte integrazioni e supporto per i server Apache, insieme a una documentazione di prim’ordine.
Questo è un ulteriore motivo per scegliere Apache e contribuisce al suo uso continuo. Tuttavia, Nginx è un software server con a massiccia quota di mercato di suo. C’è un lento aumento dell’utilizzo di Nginx nel tempo, al punto che ora è la tecnologia di server web più dominante sul mercato, anche se non di molto.
Guardando al futuro, suggeriamo che Apache vedrà meno utilizzo nel tempo perché Nginx fornisce molto di ciò di cui gli amministratori di sistema hanno bisogno in un server web. Tuttavia, Server Web LiteSpeed e Cloudflare Server sono all’orizzonte e sono dotati di una base di utenti in crescita e di un forte sostegno. Tra qualche anno, questo confronto potrebbe paragonare Nginx a uno di questi giovani arrivati.
Nginx vs Apache: un’analisi tecnica delle caratteristiche e delle funzionalità
Le prossime sezioni copriranno una serie di aspetti tecnici di Nginx vs Apache. Anche se non possiamo coprire tutto, daremo ampio tempo alle aree principali. In ogni caso, poiché questi rappresentano gli elementi fondamentali di entrambi i tipi di server, avrai più che sufficiente per andare avanti quando si tratta di scegliere il software giusto per te.
1. Connessione e gestione delle richieste
Il modo in cui un server gestisce le connessioni è fondamentale da sapere perché questa è la sua “valuta principale”. È discutibile, ma quando le persone cercano di discutere i meriti relativi di Nginx vs Apache, la gestione della connessione gioca un ruolo importante nelle percezioni.
Nginx
Nginx è “asincrono” e “guidato dagli eventi”, il che significa che può gestire più richieste contemporaneamente ed elaborarle mentre ci sono risorse disponibili. Genera “processi di lavoro” per gestire le connessioni in entrata, di cui si aspetta migliaia alla volta. Questi sono i “portatori d’acqua” per il resto del server.
Ad esempio, ogni processo di lavoro ascolterà per elaborare eventi e connessioni e li aggiungerà a un ciclo continuo. Da lì, il server può elaborare ogni evento e rimuoverlo al termine. Il flusso di un server Nginx fornisce scalabilità intrinseca e l’architettura asincrona e non bloccante serve anche a questo.
Apache
Al contrario, Apache gestisce gli eventi uno alla volta attraverso un numero di Moduli multi-elaborazione (MPM). Un amministratore di sistema sceglierà l’architettura di connessione più adatta all’attività, di cui ce ne sono alcune.
Il mpm_prefork
modulo è comune. Questo genera processi figlio per ogni evento ed elaborerà solo una connessione alla volta. Se il numero di processi è superiore al numero di richieste, faresti fatica a distinguere tra Nginx e Apache per quanto riguarda le prestazioni.
Tuttavia, questo tipo di situazione è raro e un server Apache vedrà un numero maggiore di richieste rispetto ai processi in molte occasioni. Inoltre, questo MPM non si adatta bene a causa dell’utilizzo della memoria.
Per coloro che lavorano con PHP, mpm_prefork
è l’unico modo sicuro per lavorare con il mod_php
modulo interprete. Nonostante gli svantaggi, questo sarà l’MPM che uno sviluppatore di WordPress sceglierà se deve distribuire su un server Apache.
Vedrai anche mpm_worker
e mpm_event
anche i moduli. Questi eseguono un’operazione simile e si ridimensionano meglio grazie al modo in cui possono generare più processi per raccolta di thread.
Questo batch di MPM mostra quanto può essere flessibile Apache, nonostante gli svantaggi per le prestazioni in alcuni casi.
Gestione delle richieste per contenuto statico e dinamico
Prima di andare avanti, dovremmo menzionare il contenuto statico rispetto a quello dinamico per ciascun software del server. Leggerai che Nginx non è in grado di elaborare contenuti dinamici, il che potrebbe darti motivo di preoccupazione. Infatti, Nginx non elaborerà questo tipo di contenuto in modo nativo. Invece, lo invierà a un processore esterno (come una cache), quindi attenderà che ritorni prima di spostare il contenuto.
Per lo sviluppo, un amministratore di sistema creerà una soluzione come Memcached per questo. Ci sono aspetti negativi di questo approccio, in particolare sulle prestazioni. Tuttavia, i vantaggi per i costi generali delle prestazioni per ciascuna parte della catena lo negano. Nginx non deve preoccuparsi di elaborare queste richieste, quindi può concentrarsi sulle proprie aree di responsabilità con maggiore efficienza.
Il sistema MPM di Apache consente di elaborare contenuti sia statici che dinamici senza la necessità di altri moduli. Per i contenuti dinamici, Apache incorpora un elaboratore di linguaggio in ogni lavoratore. È un approccio semplice che funziona bene. Puoi anche scambiare i moduli se devi apportare una modifica.
2. Configurazione del server
Una delle differenze più evidenti tra Nginx e Apache è il modo in cui si configura ciascun server. Nginx utilizza un approccio centralizzato, il che significa che un utente non ha modo di configurare un server al di fuori di un file principale. Anche se questo sembra un aspetto negativo, ci sono molti vantaggi:
- L’amministratore del server è responsabile della sicurezza globale, che restringe l’accesso al server nel suo insieme.
- Un server centralizzato ha prestazioni superiori rispetto ad altri tipi. Questo perché Nginx non avrà bisogno di gestire le richieste per controllare i file di configurazione in ogni directory.
- C’è un effetto a catena qui, poiché non ci saranno override per il server da più aree, riducendo ulteriormente i tempi di richiesta.
Un modo in cui un laico saprà di utilizzare un server Apache è la presenza di .htaccess
File. Questi sono file di configurazione che puoi aggiungere quasi ovunque sul tuo server. Apache controllerà ogni elemento di un percorso per a .htaccess
file quando viene effettuata una richiesta.

Questo è fantastico per gli utenti che desiderano personalizzare la propria porzione di server ma potrebbe portare a un disastro se una delle direttive causa problemi di prestazioni o sicurezza. Questo approccio decentralizzato è uno dei motivi per cui vedrai Apache utilizzato sull’hosting condiviso. È anche un motivo per cui un sistema di gestione dei contenuti (CMS) come WordPress offre buone prestazioni sui server Apache.
3. Richiedere l’interpretazione
Una delle principali differenze tra Nginx e Apache che non sembrerà evidente è il modo in cui interpreta le richieste. In poche parole:
- Nginx interpreta e mappa le richieste utilizzando un Uniform Resource Identifier (URI) per ciascun componente.
- Apache può anche utilizzare gli URI per interpretare le richieste, ma è più comune vedere una struttura di percorso basata su file.
Poiché Apache è prima di tutto un server Web, utilizzerà <Directory>
, <Files>
o <Location>
blocchi per definire le risorse. Il concetto chiave qui è che tutto ciò che Apache “vede” è correlato al server web, quindi non c’è ambiguità all’interno del percorso della risorsa. Pensa a un albero del documento, ed è così che Apache “visualizza” il filesystem del server.

Al contrario, Nginx ha molti casi d’uso, come un bilanciamento del carico, un server proxy e un server web. Per questo motivo, le richieste devono arrivare come URI affinché Nginx le elabori. Ad esempio, Nginx utilizza server
e location
blocchi: il primo interpreta l’host richiesto e il secondo abbina successivamente le porzioni dell’URI. L’intera richiesta diventa un URI.

Nel complesso, un URI è più flessibile per Nginx, perché può adattarsi a qualunque funzione svolga. Anche così, il sistema di Apache funziona, dato che deve solo svolgere il ruolo di server web.
Nginx vs Apache: quale dovresti scegliere per il tuo server nel 2023
La risposta universale a, Quale software server dovrei scegliere? è semplice: è quello che offre il tuo provider di hosting. In molti casi, non avrai scelta. Notiamo che molti host web seguono lo stesso schema che dovresti abbinare se vuoi decidere tra Nginx vs Apache:
- Se vuoi eseguire un server che richiede una configurazione costante o vuoi offrire agli utenti una scelta di configurazione, Apache farà al caso tuo.
- Tuttavia, se vuoi fornire prestazioni eccellenti, sicurezza solida e vuoi gestire le configurazioni piuttosto che i tuoi utenti, Nginx è la strada da percorrere.
Quando si tratta di prestazioni, Apache potere occupare più memoria a causa della sua architettura intrinseca. Nginx sarà migliore in situazioni di traffico elevato, soprattutto se deve gestire molti contenuti statici.
Pertanto, se ti affidi alla memorizzazione nella cache per archiviare e servire i contenuti, Nginx potrebbe essere l’opzione migliore. Tuttavia, ricorda che Nginx non può servire contenuti dinamici, quindi subirai un impatto maggiore sulle prestazioni a seconda dell’efficienza del proxy utilizzato dal tuo server.
Conclusione
Esistono molte aree di WordPress (e la gestione di un sito Web) che offrono un numero quasi schiacciante di scelte. Questa è la natura della bestia. Tuttavia, non aiuta quando devi far vivere rapidamente il tuo sito.
La tua scelta del tipo di server è una decisione cruciale e in prima linea su cui vorrai prestare particolare attenzione. Nginx vs Apache è un confronto comune perché entrambi offrono vantaggi in determinate situazioni.
La nostra opinione è che Nginx può coprire la maggior parte delle basi con prestazioni migliori, il che lo rende l’opzione migliore per la maggior parte degli utenti di WordPress. Questo è il motivo per cui molti dei popolari host WordPress incentrati sulle prestazioni si sono spostati verso uno stack di server tutto Nginx, inclusi Kinsta e Flywheel.
Indipendentemente da ciò, sei sicuro di utilizzare qualsiasi cosa ti offra il tuo host se non ottieni questa scelta e la maggior parte dei siti WordPress andrà benissimo con entrambi i server web.