Nginx vs Apache come proxy inverso, quale scegliere


36

questo tipo di domanda forse è stata posta qui, ma non sono riuscito a trovarne nessuna che corrisponda davvero alla mia domanda. Ho sentito che le prestazioni di nginx sono piuttosto impressionanti, ma Apache ha più documenti, community (leggi: esperto) per ottenere aiuto

Ora quello che voglio sapere, come entrambi i server web si confrontano in termini di prestazioni, facilità di configurazione, livello di personalizzazione, ecc. COME server REVERSE PROXY in un ambiente vps ??

Sto ancora pesando tra i due per un'app web ruby ​​(non ROR) servita con thin (uno dei web server ruby).
La risposta specifica sarà molto apprezzata. La risposta generale non tocca la parte rubina va bene. Sono ancora indecente nell'amministrazione del web server.


grazie a Martin e Webdestroya risponde, ora mi sto sporgendo verso Nginx
mhd

Non avrebbe più senso andare con un proxy inverso appositamente progettato come la vernice?
ptman,

Risposte:


31

Volevo inserirlo in un commento poiché sono d'accordo con il punto più importante della risposta di webdestroyas, ma è diventato un po 'troppo lungo.

Sei in un ambiente VPS, questo significa che molto probabilmente avrai poca RAM. Per questo motivo da solo vorrai Nginx poiché la sua impronta di memoria è più piccola di Apache.

Inoltre, non concordo con alcuni degli argomenti citati.

Facilità di configurazione:
Nginx non è più difficile di Apache. È diverso. Se sei abituato ad Apache, il cambiamento sarà sempre più difficile, questo non significa che lo stesso stile di configurazione sia più difficile. Ho migrato completamente da Apache a Nginx più di un anno fa e oggi avrei difficoltà a configurare un server Apache mentre trovo Nginx estremamente facile da configurare.

Per Ruby:
Nginx ha Passenger, tuttavia, di solito lo vedo descritto come il metodo inferiore per connettersi a Ruby. Non sono un programmatore di Ruby, quindi non posso verificarlo, ma vedo spesso Unicorn e Thin menzionati come alternative migliori.

In conclusione:
Nginx è stato creato per essere un proxy inverso. Inizialmente tutto ciò che faceva era servire file statici e invertire il proxy su un server back-end tramite HTTP / 1.0. Da allora sono stati aggiunti fastcgi, bilanciamento del carico e varie altre funzionalità, ma il suo scopo di progettazione iniziale era di servire file statici e proxy inverso. E lo fa davvero bene.

Apache, al contrario, è un web server generico. Non ho dubbi sul fatto che possa invertire perfettamente il proxy, ma non è stato progettato per avere un ingombro di memoria minimo e di conseguenza richiede più risorse di Nginx, il che significa che il mio argomento iniziale sull'ambiente VPS entra in gioco.


+1 per il chiarimento.
John Gardeniers,

Vorrei arrivare fino a consigliarlo come unico server Web. vedi i miei commenti serverfault.com/questions/133481/… <- qui. Lo sto usando come unico web server sul mio VPS e ho coinvolto gli altri utenti con FastCGI per le loro app PHP / CGI.
Jason

Jason Lo uso come unico web server da oltre un anno e gestisce milioni di pagine caricate al giorno. Sono pienamente d'accordo con la tua raccomandazione! :)
Martin Fjordvald

8

Prestazioni:
NGinX. Questo server è noto per essere uno dei server Web con le migliori prestazioni ed è utilizzato da molte aziende diverse (Notable, MediaTemple)

Facilità di configurazione:
Apache. La configurazione di Apache è davvero semplice e molto potente. Nginx è potente, ma può essere molto difficile da capire, poiché sembra più un linguaggio di programmazione che un file di configurazione.

Livello di personalizzazione:
Apache. Apache ha tonnellate di mod e altri plugin scritti per questo. Mentre Nginx ha ancora dei plug-in pensati per questo, penso che Apache ne abbia molti di più rispetto a Nginx.

Per Ruby:
so che Nginx può essere usato come un potente bilanciamento del carico con Mongrel / Webrick. Tuttavia, Apache ha Phusion / Passenger che rende l'integrazione più piacevole.

Vincitore del proxy inverso:
NGinX


2
Sono interessato, non discutere. Perché Nginx è un vincitore per il proxy inverso? Il resto della tua risposta non fa davvero risaltare l'uno dall'altro. Semmai tende a favorire Apache.
John Gardeniers,

1
Bene, perché per la maggior parte, si desidera un proxy inverso a causa del carico elevato. Il che significherebbe che la prestazione è probabilmente il problema più grande, nel qual caso Nginx è stato il vincitore, motivo per cui l'ho scelto. Come sviluppatore, adoro apache, ma da un punto "come posso ottenere il massimo delle prestazioni da questo server Web", vorrei andare con Nginx
Mitch Dempsey

8

Nginx è basato sugli eventi, mentre apache è basato sui processi. Sotto carico elevato, questo fa la differenza nel mondo ... Apache deve eseguire il fork o avviare un nuovo thread per ogni connessione, mentre nginx no. Questa differenza si manifesta principalmente nell'utilizzo della memoria, ma anche nei tempi di risposta degli utenti e in altre metriche delle prestazioni. Nginx può gestire decine di migliaia di connessioni keepalive HTTP simultanee su hardware moderno. Apache utilizzerà 1-2 MB di stack per ogni connessione, quindi facendo i conti vedi che puoi gestire solo poche centinaia o forse mille connessioni contemporaneamente senza iniziare a scambiare.

Usiamo nginx di fronte ad Apache e IIS nel nostro ambiente come proxy di bilanciamento del carico e cache, e non potremmo essere più felici. Usiamo due scatole nginx di piccole dimensioni al posto di una coppia di dispositivi F5 noleggiati molto costosi e i nostri siti sono molto più veloci sia in termini di sensibilità che di tempi di risposta misurati.


1

Ero nello stesso dilemma di te circa due settimane fa.

Per darti una risposta molto concisa: dalla mia ricerca nginx è molto veloce e intuitivo, ma è stato concesso solo di invertire i file statici proxy. Il resto sono soluzioni imbullonate che devi configurare o scrivere a modo tuo.

AFAIK nginx non ha file htaccess, quindi devi orientarti se dipende da quella funzione.

AFAIK tutto il necessario funziona e ho visto tutorial.

Andrò con nginx con la mia configurazione di test e profiling. Ho una tipica applicazione LAMPADA.

Ho letto che ci sono persone che invertono il proxy e servono file statici da nginx e passano tutto il resto come PHP a un'istanza di Apache in esecuzione. Sostengono un buon compromesso. Non ho dati sulle prestazioni a riguardo, ma potresti volerlo sapere.


2
La disabilitazione delle sostituzioni htaccess su apache per motivi di prestazioni è abbastanza comune, il supporto di una tale funzionalità in un server progettato per alte prestazioni non avrebbe molto senso.
theotherreceive

Grazie per aver aggiunto quella dichiarazione. L'OP non è un amministratore professionale, quindi dobbiamo essere chiari.
deploymonkey

1

Negli ultimi due anni ho avuto seri problemi con il mod_proxy di Apache su una varietà di piattaforme in vari ambienti diversi. Di tanto in tanto, smetterà semplicemente di funzionare e l'unica cura sembra essere il riavvio del server Apache.

Personalmente, non chiederei "nginx vs Apache", ma "nginx vs lighttpd" - e questa è una chiamata molto più dura!


Argomento valido, ma l'ultima volta che ho verificato, lighttpd presentava ancora bug da tempo in sospeso ed è stato rinominato per perdite di memoria. È stato sconsigliato per la distribuzione della produzione da parte degli amministratori. È cambiato?
deploymonkey

Ha avvertimenti, certamente (specialmente dove servono file molto grandi), ma è significativamente più stabile di Apache come proxy - Non ho avuto problemi reali in diverse distribuzioni negli ultimi sei mesi
Mo.

Ho cancellato lighttpd dalla lista dei candidati per qualche motivo dimenticato :)
mhd
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.