Nginx vs Apache: qual è il miglior server Web?

Pubblicato: 2021-12-30

Sebbene ci siano molti tipi diversi di software 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 dell'altra.

Anche così, vorrai comunque considerare quale di questi ha più senso per le tue esigenze. Esistono diverse categorie da esaminare, come il supporto del sistema operativo (OS), la sicurezza, la documentazione e (ovviamente) le prestazioni.

Per questo post, confronteremo Nginx e 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 profondi di ciascun tipo di server, ti diamo un riepilogo sia su Nginx che su Apache. Una volta arrivati ​​alla sezione successiva, imparerai alcuni dei casi d'uso di entrambi e dove potresti vederli "in natura".

#Nginx vs #Apache: qual è il server web giusto per te?
Fare clic per twittare

Nginx

Il logo Nginx.

Rispetto ad Apache, Nginx ( pronunciato "engine X" ) è un relativamente principiante 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 basata sugli eventi, di cui parleremo più avanti. In effetti, parte dell'obiettivo della versione iniziale di Nginx era di essere in grado di gestire 10.000 connessioni contemporaneamente. Questo è qualcosa che era necessario nel 2004, a causa del web in rapida espansione dell'epoca.

Nel complesso, agli amministratori di sistema e ai proprietari di siti piace Nginx perché è performante, funziona alla grande con i file statici ed esegue 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

Il logo del server HTTPS Apache.

Apache è in qualche modo il "vecchio" della tecnologia dei server web. È vecchio quasi quanto il web stesso: dal 1995 Apache è stato il software al centro 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 alla forza dell'abitudine. Indipendentemente da ciò, i server Apache sono molto utili 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.

Molti amministratori di sistema apprezzano anche la natura personalizzabile di Apache e come puoi creare un server tuo 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 in cui non abbiamo 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 ora , una soluzione come Nginx funziona pensando al Web moderno.

In quanto tale, scoprirai che Apache è fantastico come server facile da configurare per applicazioni come l'hosting condiviso. Le sue integrazioni lo vedono anche utilizzato come software per server di sviluppo locale, come parte dello stack Linux, Apache, MySQL e PHP (LAMP).

I loghi per tutte le parti di uno stack LAMP: Linux, Apache, MySQL e PHP.

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 lo è 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 ha funzionato come una 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 serve come ulteriore motivo per scegliere Apache e contribuisce al suo uso continuato. Tuttavia, Nginx è un software server con un'enorme quota di mercato a sé stante. 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à un utilizzo minore nel tempo perché Nginx fornisce molto di ciò di cui gli amministratori di sistema hanno bisogno in un server web. Tuttavia, LiteSpeed ​​Web Server e Cloudflare Server sono all'orizzonte e hanno una base di utenti in crescita e un forte supporto. In pochi anni, questo confronto potrebbe confrontare Nginx con uno di questi nuovi arrivati.

Nginx vs Apache: un'analisi tecnica delle caratteristiche e delle funzionalità

Le prossime sezioni tratteranno 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. Collegamento e gestione delle richieste

È fondamentale sapere come un server gestisce le connessioni 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 da eventi", il che significa che può gestire più richieste contemporaneamente ed elaborarle finché 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à gli eventi di elaborazione e le 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 anche l'architettura asincrona non bloccante serve.

Apache

Al contrario, Apache gestisce gli eventi uno alla volta attraverso una serie di Multi-Processing Modules (MPM). Un amministratore di sistema sceglierà l'architettura di connessione più adatta all'attività, di cui ce ne sono alcune.

Il modulo mpm_prefork è 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 in molte occasioni un server Apache vedrà un numero di richieste maggiore rispetto ai processi. Inoltre, questo MPM non si adatta bene, a causa dell'utilizzo della memoria.

Per chi lavora con PHP, mpm_prefork è l'unico modo sicuro per lavorare con il modulo interprete mod_php . Nonostante gli svantaggi, questo sarà l'MPM che uno sviluppatore di WordPress sceglierà se deve distribuire su un server Apache.

Vedrai anche i moduli mpm_worker e mpm_event . 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 o dinamico

Prima di andare avanti, dovremmo menzionare il contenuto statico rispetto a quello dinamico per ciascun software server. Leggerai che Nginx non può elaborare contenuti dinamici, il che potrebbe darti motivo di preoccupazione. In effetti, Nginx non elaborerà questo tipo di contenuto in modo nativo. Invece, lo invierà a un processore esterno (come una cache), quindi attenderà il suo ritorno prima di spostare il contenuto.

Per lo sviluppo, un amministratore di sistema imposterà una soluzione come Memcached per questo. Ci sono aspetti negativi in ​​questo approccio, in particolare sulle prestazioni. Tuttavia, i vantaggi per le spese generali delle prestazioni per ciascuna parte della catena negano questo. Nginx non deve preoccuparsi di elaborare queste richieste, quindi può concentrarsi sulle sue 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 il contenuto dinamico, Apache incorpora un processore di linguaggio in ogni lavoratore. È un approccio semplice che funziona bene. Puoi anche sostituire i moduli se devi apportare una modifica.

2. Configurazione del server

Una delle differenze più evidenti tra Nginx e Apache è la modalità di configurazione di 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 rafforza l'accesso al server nel suo insieme.
  • Un server centralizzato ha prestazioni maggiori 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 sostituzioni per il server da più aree, mantenendo ulteriormente bassi i tempi di richiesta.

Un modo in cui un laico saprà che usano un server Apache è la presenza di file .htaccess . Questi sono file di configurazione che puoi aggiungere quasi ovunque sul tuo server. Apache controllerà ogni elemento di un percorso per un file .htaccess quando viene effettuata una richiesta.

Un file .htaccess che mostra alcune regole di riscrittura - Confronto Nginx vs Apache

Questo è fantastico per gli utenti che desiderano personalizzare la propria parte di server, ma potrebbe causare un disastro se una delle direttive causa problemi di prestazioni o sicurezza. Questo approccio decentralizzato è uno dei motivi per cui vedrai Apache utilizzato nell'hosting condiviso. È anche un motivo per cui un sistema di gestione dei contenuti (CMS) come WordPress offre buone prestazioni sui server Apache.

3. Richiedi 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 URI (Uniform Resource Identifier) ​​per ogni componente.
  • Apache può anche utilizzare gli URI per interpretare le richieste, ma è più comune vedere una struttura di percorsi basata su file.

Poiché Apache è innanzitutto un server Web, utilizzerà i blocchi <Directory> , <Files> o <Location> 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 di documenti, ed è così che Apache "visualizza" il filesystem del server.

Un file di configurazione di Apache, che mostra la protezione del filesystem per directory specifiche - Confronto Nginx vs Apache

Al contrario, Nginx ha molti casi d'uso, come un sistema di 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 blocchi di location : il primo interpreta l'host richiesto e il secondo corrisponde alle parti URI in seguito. L'intera richiesta diventa un URI.

Un file di configurazione Nginx - Confronto Nginx vs Apache

Nel complesso, un URI è più flessibile per Nginx, perché può adattarsi a qualsiasi 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 2022

La risposta generale 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 e Apache:

  • Se vuoi eseguire un server che necessita di una configurazione costante, o vuoi dare agli utenti una scelta di configurazione, Apache si adatta al conto.
  • Tuttavia, se vuoi fornire prestazioni eccellenti, sicurezza solida e vuoi gestire le configurazioni anziché i tuoi utenti, Nginx è la via da seguire.

Quando si tratta di prestazioni, Apache può occupare più memoria grazie alla sua architettura intrinseca. Nginx sarà migliore in situazioni ad alto traffico, specialmente se deve gestire molti contenuti statici.

Pertanto, se fai affidamento sulla memorizzazione nella cache per archiviare e servire contenuti, Nginx potrebbe essere l'opzione migliore. Tuttavia, ricorda che Nginx non può servire contenuto dinamico, quindi subirai un aumento delle prestazioni a seconda dell'efficienza del proxy utilizzato dal tuo server.

Vai in alto

Conclusione

Ci sono molte aree di WordPress (e della gestione di un sito Web) che offrono un numero quasi schiacciante di scelte. Questa è la natura della bestia. Tuttavia, non aiuta quando è necessario rendere attivo il tuo sito rapidamente.

#Nginx vs #Apache: qual è il server web giusto per te?
Fare clic per twittare

La scelta del tipo di server è una decisione cruciale e in prima linea a 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 maggiori, 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 sono passati a uno stack di server interamente Nginx, inclusi Kinsta e Flywheel.

Indipendentemente da ciò, sei sicuro di usare qualunque cosa il tuo host offra se non hai questa scelta e la maggior parte dei siti WordPress andrà benissimo con entrambi i server web.

Dove ti siedi sul recinto tra Nginx e Apache? Fatecelo sapere nella sezione commenti qui sotto!

Guida gratuita

5 consigli essenziali per accelerare
Il tuo sito WordPress

Riduci i tempi di caricamento anche del 50-80%
solo seguendo semplici consigli.

Scarica la guida gratuita