Cosa manca a Nginx di Apache?


11

Si dice che Nginx sia molto più efficiente in termini di risorse e più facile da configurare rispetto ad Apache. Un amico mi ha detto che "non può fare alcune cose che Apache può fare, ma comunque non ho bisogno di quelle cose".

Tuttavia, sono curioso: che tipo di cose può fare Apache che Nginx non può fare? Non ho bisogno di un elenco esaustivo, solo un'idea generale di scenari in cui Apache sarebbe una scelta migliore.

Risposte:


9

Penso che i pezzi più grandi ancora mancanti da Nginx siano il pieno supporto WebDAV. Praticamente ogni altro aspetto è coperto dal core o da un modulo di terze parti.

Nginx non supporta cose come mod_php in base alla progettazione, quindi non sono sicuro che si possa dire che a Nginx mancano queste parti. È più come se Nginx ti stesse dicendo con forza che usare questo è stupido.


+1 Anche se non sono d'accordo sul fatto che ogni possibile uso di mod_php e cose del genere siano "stupidi", sono d'accordo con il resto.
Chris S,

È un commento di php-hater o c'è qualcosa di veramente intrinsecamente negativo in mod_php? Link? Lo chiedo perché quasi tutto quello che ho usa mod_php .. e per favore, non mi importa cosa pensi sia meglio, vorrei solo sapere cosa c'è che non va in mod_php
Safado

3
mod_php non ha nulla a che fare con lo stesso PHP. Ha a che fare con il modo in cui PHP interagisce con Apache. Il problema è che quando si incorpora PHP in Apache, il processo che gestisce PHP e il processo che gestisce un file di immagine da 2kb è esattamente lo stesso processo. Se il client finale è lento, il tuo processo molto costoso può servire una piccola immagine per 2 secondi, che è tempo che non può passare su PHP.
Martin Fjordvald,

+1 "È più come se Nginx ti stesse dicendo con forza che usare questo è stupido."

4

Apache ha una grande quantità di moduli disponibili che consentono alcuni scenari di distribuzione che non sono possibili con Nginx.

Un esempio è mod_dav_svnper l'hosting di Subversion su HTTP. È disponibile solo per Apache. Altri esempi notevoli sono cose come mod_perlo mod_php. Mentre la maggior parte delle configurazioni tradizionali può anche essere eseguita tramite FCGI (o WSGI o passeggero), avere un vero interprete in-process può essere utile se è necessario, ad esempio, implementare schemi di autenticazione personalizzati all'interno del server web (come avviene per l'hosting git o svn con Redmine / ChiliProject).

In generale, il tuo amico ha ragione: gli scenari di distribuzione più comuni possono anche essere risolti con nginx, ma Apache è ancora più flessibile se devi costruire cose più "speciali".


3

La versione breve della storia è che Apache ha molti plugin e community costruiti attorno ad esso. Nginx, è stato in circolazione solo per un breve periodo, quindi non ha ancora la base di codice della comunità.

Quando la gente mi chiede qual è la differenza, Nginx è un coltello da bistecca, è buono per una varietà di usi e fa alcune cose estremamente bene. Apache è un coltellino svizzero, ha un sacco di funzioni diverse e le fa tutte ragionevolmente bene.


Penso che potresti essere leggermente superato da ciò che Nginx può fare, in alcune aree è molto più versatile di Apache. A corto di proxy HTTP / 1.1 e WebDAV non riesco a pensare a molte cose che mancano.
Martin Fjordvald,

@MartinFjordvald Ci sono alcune funzioni che Nginx ha scelto intenzionalmente di non fare, non puoi dire che sono "mancanti", ma non puoi affermare che Nginx può fare tutto ciò che Apache può fare. È un compromesso e applaudo a Nginx per le scelte che hanno fatto.
Chris S,

Bene, poiché il mio commento originale HTTP / 1.1 è ora supportato il proxy, quindi non siamo supportati da webdav e svn hosting. Questo se non consideriamo questioni come i moduli collegati dinamicamente, il che è vero che nginx ha deciso di non farlo finora.
Martin Fjordvald,

1

Molti moduli e una base installata ginourmous, per cominciare. Ma non è esattamente quello che Apache ha da guardare, è quello che fa Apache : funziona in modo molto migliore per servire contenuti dinamici come PHP, Python, Perl, Java, ecc.

Ovviamente puoi farlo anche con Nginx (ma è un po 'IMHO hacker), ma le soluzioni sono molto più collaudate e mature in esecuzione su Apache che su NginX, che a sua volta è molto meglio di Apache nel servire carichi elevati e un superbo rewriter / reverse proxy.

Per ogni lavoro, lo strumento giusto!


Forse questo era vero prima del 2008 quando ho distribuito nginx per la prima volta su un server Web di produzione, ma non sembra così ora. Mi piacerebbe vedere un'espansione del perché credi che il modello di Apache di includere gli interpreti nel web server sia migliore.
Michael Hampton
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.