GNU/Linux >> Linux Esercitazione >  >> Linux

Apache vs Nginx:quale server Web dovresti scegliere

Apache vs Nginx è un argomento ben meritato. Se sei confuso su quale server sia la soluzione migliore per te, scopriamo la risposta in questo articolo.

Apache e Nginx sono i server Web più popolari che alimentano Internet oggi. Insieme, sono responsabili di servire oltre il 50% del traffico su Internet. Ma Apache ha visto un declino negli ultimi anni, a favore di Nginx. Ad alto livello, entrambe le piattaforme fanno la stessa cosa fondamentale:ospitare e servire contenuti web. Entrambi hanno capacità uniche che soddisfano particolari requisiti informatici, rendendone uno più adatto dell'altro in vari scenari.

Apache:un server Web ricco di funzionalità

Apache è un'applicazione server Web modulare basata sui processi che crea un nuovo thread con ogni connessione simultanea. Supporta una serie di funzionalità. Molti di essi sono compilati come moduli separati ed estendono le sue funzionalità principali. I moduli di Apache possono fornire qualsiasi cosa, dal supporto del linguaggio di programmazione lato server al meccanismo di autenticazione.

Il web server Apache è un'applicazione modulare dove l'amministratore può scegliere la funzionalità richiesta e installare diversi moduli in base alla funzionalità specifica richiesta. Tutti i moduli possono essere compilati come Oggetti dinamici condivisi (DSO) che esiste separatamente dal file Apache principale. L'approccio DSO è altamente raccomandato, perché rende molto semplice il compito di aggiungere/rimuovere/aggiornare moduli dalla configurazione dei server.

Un'altra caratteristica essenziale dell'architettura di Apache sono i filtri , che consentono ai moduli di interagire con il contenuto creato da altri moduli. Questa interazione include crittografia, scansioni antivirus e compressione di contenuti sia statici che dinamici.

Apache è spesso scelto dagli amministratori per la sua flessibilità, potenza e supporto diffuso.

Nginx:progettato per prestazioni e scalabilità

Nginx è stato creato da uno sviluppatore di software russo di nome Igor Sysoev come risposta a un problema noto come C10K :gestire 10.000 connessioni client simultanee ai client. È stato scritto specificamente per affrontare i limiti delle prestazioni dei server Web Apache. Il server è stato creato per la prima volta come strumento di ridimensionamento per il sito web rambler.ru nel 2002.

NGINX è un server Web asincrono ad alte prestazioni. Utilizza un'architettura basata sugli eventi per gestire enormi quantità di connessioni. È più popolare di Apache Web Server ora, per vari motivi che vedremo in questo articolo.

Nginx è stato utilizzato principalmente per servire file statici, ma oggi si è evoluto come un server Web completo che si occupa dell'intero spettro delle attività del server. Oggi, Nginx viene utilizzato anche come proxy inverso, bilanciamento del carico e per la memorizzazione nella cache HTTP. In alcuni casi d'uso, Nginx funge anche da acceleratore web o terminatore SSL/TLS.

Nginx è spesso selezionato dagli amministratori per la sua efficienza delle risorse e la reattività sotto carico.

Apache contro Nginx:confronto dettagliato

Architettura

Nel caso di Apache e Nginx, c'è una differenza fondamentale tra le architetture di entrambi i server Web su cui operano.

Soprattutto, la principale differenza tra Apache e Nginx è il modo in cui gestiscono la richiesta del cliente. Apache utilizza un approccio basato sui processi e crea un nuovo thread per ogni richiesta. Considerando che NGINX utilizza un'architettura basata sugli eventi per gestire più richieste all'interno di un thread.

In Apache, un singolo thread è associato a una sola connessione, mentre un singolo thread in Nginx può gestire più connessioni. Tutti i processi vengono inseriti in un ciclo di eventi insieme ad altre connessioni e vengono gestiti in modo asincrono. Questo processo consuma meno memoria, aumentando così le prestazioni.

Inoltre, poiché il consumo di memoria di Nginx è inferiore, tende a essere in grado di gestire più connessioni contemporaneamente senza sovraccaricare il server host. Se Apache deve affrontare grandi volumi di richieste, potrebbe finire per consumare tutta la memoria di sistema e richiedere l'archiviazione dei dati in swap, il che rallenta notevolmente le prestazioni.

Prestazioni:contenuto statico/dinamico

Le prestazioni di un server web sono principalmente giudicate da due parametri, ovvero la sua capacità di gestire contenuti statici e dinamici.

I file statici non richiedono elaborazione, quindi questo è utile per misurare i tempi di risposta dei server. Quindi, quanto velocemente ogni server può fornire piccoli file statici? Quando si tratta di contenuto statico, è qui che brilla Nginx, poiché i file possono essere forniti direttamente al client e rapidamente. Nginx ha prestazioni 2,5 volte più veloci di Apache secondo un test di benchmark eseguito eseguendo fino a 1.000 connessioni simultanee. Allo stesso tempo, il consumo di RAM è inferiore. Per gestire il carico, Nginx ha utilizzato 5-6% in meno di memoria di sistema. La differenza deriva principalmente dall'architettura del server.

Per la visualizzazione di contenuti dinamici, i risultati del test hanno rivelato che le prestazioni di Apache rispetto a Nginx per entrambi erano esattamente le stesse.

Nginx non ha alcuna capacità di elaborare contenuti dinamici in modo nativo. Non è progettato per l'elaborazione nativa di contenuto dinamico. Nginx deve passare a un processore esterno per gestire PHP e altre richieste di contenuto dinamico. Questo può complicare leggermente le cose, soprattutto quando si cerca di anticipare il numero di connessioni da consentire.

A differenza di Ngnix, Apache può elaborare contenuto dinamico incorporando un processore di un linguaggio come PHP in ciascuna delle sue istanze worker. Ciò gli consente di eseguire contenuti dinamici all'interno del server Web stesso senza dover fare affidamento su componenti esterni.

Personalizzazione

Apache presenta moduli caricati dinamicamente che può essere utilizzato ogni volta che ce n'è bisogno. Il server supporta molti moduli diversi, sia ufficiali che di terze parti. Ciò rende Apache una piattaforma molto personalizzabile che gli utenti possono adattare alle proprie esigenze. I moduli possono essere utilizzati per riscrivere URL, autenticare client, registrare, memorizzare nella cache, rafforzare il server, compressione, crittografia e altro. I moduli dinamici possono estendere considerevolmente le funzionalità di base senza molto lavoro aggiuntivo.

I moduli Nginx devono essere integrati nel core e non possono essere caricati dinamicamente. Per includere moduli non standard, gli utenti devono compilare il proprio server dal sorgente.

La mancanza di questa capacità nel server web Nginx, rende Apache più flessibile in questo senso.

Configurazione

Oltre al file di configurazione principale, Apache consente una configurazione aggiuntiva per directory tramite .htaccess file. Modifiche apportate in .htaccess i file vengono immediatamente applicati al sistema. Questi file includono qualsiasi cosa, dalle regole di reindirizzamento ai limiti di memoria e molto altro, e consentono in modo efficace la configurazione decentralizzata del server web. Inoltre, questa architettura consente agli utenti non privilegiati di controllare determinati aspetti del proprio sito Web senza concedere loro il permesso di modificare la configurazione principale.

Questa flessibilità, tuttavia, va a scapito delle prestazioni. Ogni volta .htaccess i file sono abilitati, Apache deve attraversare l'intero albero delle directory dall'URL o dal file richiesto attraverso tutti i livelli superiori fino alla directory principale del server e quindi caricarli, per ogni richiesta.

Nginx non consente configurazioni aggiuntive. La sua configurazione è centralizzata. Hai un unico file che governa l'intero processo, rendendolo molto più veloce in questo senso, anche se molto meno flessibile. La configurazione centrale di Nginx è meno flessibile del concetto utilizzato da Apache, ma offre un chiaro vantaggio in termini di sicurezza:le modifiche alla configurazione del server Web possono essere apportate solo da utenti che dispongono dei permessi di root.

Poiché non esiste una configurazione a livello di directory in Nginx, gli utenti eseguono tutte le modifiche alla configurazione scrivendo le direttive nel file di configurazione principale.

Supporto

Apache e Nginx sono entrambe piattaforme molto ben documentate. È molto improbabile che gli amministratori si imbattono in un problema o abbiano una domanda la cui risposta non è stata trovata nella loro documentazione.

  • Documentazione del server HTTP Apache
  • Documentazione Nginx

Per quanto riguarda il supporto del sistema operativo, Apache funziona su tutti i sistemi operativi come Linux e UNIX e ha il supporto completo per Microsoft Windows. Nginx funziona anche su diversi sistemi moderni simili a Unix e supporta Windows, ma le sue prestazioni su Windows non sono stabili come quelle su piattaforme UNIX. Pertanto, se desideri eseguire un server Web open source ricco di funzionalità su Microsoft Windows, Apache è davvero l'unica opzione pronta per la produzione.

Utilizzare Apache e Nginx insieme

Tuttavia, una cosa da tenere a mente quando si confronta Apache con Nginx è che non deve sempre essere una decisione o una decisione. Molti amministratori combinano i due in una soluzione ibrida che sfrutta i punti di forza di ciascuno.

Apache e Nginx possono essere utilizzati fianco a fianco per creare un server ottimizzato per il carico di lavoro. Puoi utilizzare Nginx davanti ad Apache come proxy del server, che sfrutta la velocità di elaborazione e la capacità di Nginx di gestire grandi volumi di traffico. Nginx elabora e fornisce contenuto statico mentre inoltra contenuto dinamico ad Apache (come mostrato nell'immagine seguente).

Nginx esegue il lavoro pesante relativo a HTTP, servendo file statici, memorizzando nella cache il contenuto e scaricando connessioni HTTP lente, in modo che il server Apache possa eseguire il codice dell'applicazione in un ambiente sicuro.

Conclusione

Nel concorso Apache contro Nginx, la decisione può essere difficile quando si tratta di cambiare server o software server. Decidere quale server è il migliore per te è in gran parte una funzione della valutazione delle tue esigenze specifiche e della scelta dell'opzione migliore. Sia Apache che Nginx sono server Web open source ad alte prestazioni in grado di gestire carichi di lavoro diversi per soddisfare le esigenze delle moderne esigenze Web.

Se non hai bisogno di molte funzionalità del server web, Nginx è la strada da percorrere. Inoltre, per velocità e prestazioni, Nginx è anche il chiaro vincitore. È ottimo per i siti Web ad alto traffico.

Nginx non può competere con Apache ricco di funzionalità su molti fronti, ma lo stato asincrono e l'architettura velocissima a thread singolo lo rendono una scelta intelligente rispetto ad Apache.

D'altra parte, Apache potrebbe essere il server Web preferito in altri scenari. Apache è più adatto per ambienti di hosting condiviso e può fornire un pannello di controllo che semplifica le modifiche lato server.

Pertanto, prima di scegliere tra Apache e Nginx, devi analizzare attentamente i tuoi requisiti, che devi desiderare che il tuo server web serva.


Linux
  1. Come configurare un server web Apache

  2. Ottimizzazione del server Web Apache Keep-alive

  3. Come installare Nginx Web Server su Linux

  4. LAMP vs. LEMP:suggerimenti su come scegliere Apache o nginx per il tuo server web

  5. Pop! _OS vs Ubuntu Linux:quale dovresti scegliere? Ecco perché

Come ospitare un sito Web su NGINX Web Server

I 20 principali motivi per cui dovresti scegliere un server Linux

20 cose essenziali da sapere se sei su Nginx Web Server

Apache vs Nginx:quale server Web è il migliore per te?

Come aggiungere il supporto PHP-FPM su Apache e Nginx Web Server su Ubuntu 18.04

Dovrei scegliere Linux Server o Windows?