Qual è la differenza tra i pacchetti core, full, extra e light per nginx?


72

nginxsu Ubuntu è un pacchetto virtuale fornito da uno dei cinque pacchetti dai repository ufficiali (almeno a partire dal 14.04, impostazione predefinita a nginx-core, credo):

$ apt-cache depends nginx | tail -n+2 | cut -d: -f 2 | sort -u
 nginx-core
 nginx-extras
 nginx-full
 nginx-light
 nginx-naxsi

Qual è la differenza tra questi pacchetti e quali sono i casi d'uso consigliati per loro?

Questa un po 'vecchia pagina wiki di Debian ha una funzione di confronto tra il extras, full, lighte naxsi, ma non si fa menzione di core. Quanto è cambiato nel 14.04?


secondario A quanto ho capito, nginxnon supporta l'abilitazione di runtime di moduli come Apache, quindi l'installazione delle nginx-extrasprestazioni di impatto?


1
Qualcuno sembra aver realizzato una versione più recente della tabella di confronto delle caratteristiche e condividerla sui documenti di Google: docs.google.com/spreadsheet/…
Steven K,

1
@StevenKath nota che QUESTO documento è basato esclusivamente su Debian. Non tocca nginx-core e non include le modifiche instabili che rimuovono il sapore naxsi (perché non è banale da mantenere).
Thomas Ward

Risposte:


99

Mentre la risposta di Steven tocca i punti chiave e un riassunto molto basilare di ciò che ogni sapore è, ti darò una descrizione molto più ampia delle differenze, mentre lavoro un po 'sulla confezione e i diversi set di moduli in ognuno è assolutamente fondamentale per una buona risposta. Le descrizioni di base non rendono molto giustizia al confronto. (Inoltre, complimenti a Steven che cita il mio blog più vecchio (e si riferisce persino a me come "manutentore". Volevo portare il post di nginx-sta-arrivando al mio blog più recente, ma non ne ho avuto l'opportunità .)

Si noti inoltre che gli ultimi pacchetti per il web server NGINX sono disponibili nei PPA NGINX, gestiti da me stesso, basati quasi interamente su Debian. ( PPA stabile (1.6.2 a partire da questo post); Mainline PPA (1.7.7 a partire da questo post, con 1.7.8 previsto a terra il 4 dicembre 2014))


I diversi sapori di nginx:

I diversi sapori sono tutti la stessa versione di nginx, tuttavia i sapori sono stati decisi dai manutentori del pacchetto Debian al fine di fornire diversi set di funzionalità (per nginx-extras) così come il minimo indispensabile e il set completo di funzioni più efficaci che i server Web tendono ad essere utilizzati nei siti Web. Il motivo esatto per cui una funzione è stata scelta su un'altra non mi è noto, tuttavia in una discussione supplementare con uno dei manutentori Debian su IRC, è stata fatta una dichiarazione che afferma la mia valutazione iniziale, che ogni variante era intesa come un insieme diverso di funzionalità per un caso d'uso diverso - lightper un set leggero di funzionalità che soddisfa il minimo indispensabile di hosting del sito, fullper un set più completo di funzionalità senza includere extra molto più pesanti, eextrasper praticamente tutto ciò che è nel pacchetto che può essere incluso in Ubuntu. naxsi, prima del 15.04, era la variante Naxsi specificatamente con solo il minimo indispensabile di moduli, poiché naxsi poteva essere abbastanza dispendioso in termini di risorse.

Presumibilmente, secondo uno dei manutentori Debian di NGINX che si sta coordinando regolarmente con NGINX a monte in una conversazione privata di cui al momento non posso pubblicare log, NGINX 2.x avrà un supporto caricabile per moduli. In tal caso, light, full, e extrasdiventerà metapacchetti che sollecitano i singoli pacchetti contenenti ciascun modulo. La data in cui ciò accade, tuttavia, non è nota, né quali moduli saranno effettivamente in grado di farlo.

Allo stato attuale, il nginxpacchetto virtuale è progettato per installare solo una delle versioni disponibili. Per impostazione predefinita, come nginx-coreè in linea di principio e ci piacerebbe che le persone lo usassero di più, nginx-coreè il primo elemento visto e tentato dall'installazione nel pacchetto virtuale. (Tuttavia, il nginxpacchetto può fare affidamento su uno qualsiasi dei sapori di nginx, ed è principalmente lì per rendere l'installazione un po 'più semplice per coloro che non hanno bisogno di alcuna preferenza di sapore specifica)

Di seguito è disponibile una ripartizione dettagliata con i moduli specifici disponibili in ciascuna variante (basata sul file Vividdebian/control e sul file Trustydebian/control (poiché i pacchetti Naxsi sono stati rimossi in Vivid)). Nota che questo non riflette le modifiche più aggiornate in Ubuntu e dovresti fare riferimento a quelle descrizioni dei pacchetti per assicurarti di avere informazioni aggiornate e accurate :

  • nginx-coreè l'unico sapore nella sezione principale dei repository Ubuntu, a partire dal 14.04, ed esiste solo nei repository Ubuntu (e non è nei PPA o Debian e non verrà mai incluso in Debian). È effettivamente identico al nginx-fullsapore, ma non contiene moduli di terze parti. Il ragionamento dietro l'utilizzonginx-fullpoiché la base di questa variante era che volevamo fornire un set relativamente completo di moduli core nei binari incorporati, mantenendo allo stesso tempo i moduli di terze parti. In quanto tale, non contiene nessuno dei moduli di terze parti, poiché il team di sicurezza ha fatto una revisione del codice e ha scoperto che i moduli di terze parti hanno stili di codifica molto diversi che non sono ben supportati come il nginx-tarball-incluso moduli (questo è discusso in modo più approfondito nel bug Richiesta / report inclusione principale , che contiene i punti di discussione e rivede ulteriormente le discussioni su cosa potrebbe essere incluso in Ubuntu Main nginx). Un elenco completo dei moduli abilitati qui è nella descrizione del pacchetto, che ho puntato qui:

    MODULI HTTP STANDARD: Core, Access, Auth Basic, Auto Index, Browser, Charset, GIF vuota, FastCGI, Geo, Gzip, Headers, Index, Limit Requests, Limit Zone, Log, Map, Memcached, Proxy, Referer, Rewrite, SCGI , Split Client, SSI, Upstream, ID utente, UWSGI.

    MODULI HTTP OPZIONALI: Aggiunta, Debug, GeoIP, Precompressione Gzip, Sottotitolo HTTP, Filtro immagine, IPv6, IP reale, Spdy, SSL, Stato stub, Sostituzione, WebDAV, XSLT.

    MODULI MAIL: Mail Core, IMAP, POP3, SMTP, SSL.

  • nginx-lightè il sapore più leggero tra quelli nginxdisponibili. È nel repository Universe e devi averlo abilitato per usarlo. Non abilita una grande quantità di moduli disponibili in -coreo -full. Contiene anche moduli di terze parti. I moduli disponibili sono i seguenti:

    MODULI HTTP STANDARD: Core, Access, Auth Basic, Auto Index, Charset, Empty GIF, FastCGI, Gzip, Headers, Index, Log, Map, Proxy, Rewrite, Upstream.

    MODULI HTTP OPZIONALI: richiesta di autenticazione, debug, precompressione Gzip, IPv6, IP reale, SSL, stato stub.

    MODULI DI TERZI: Eco.

  • nginx-fullè uno degli aromi più ricchi di funzionalità del nginxpacchetto. Come la sua lightcontroparte, è nel repository Universe. Abilita la maggior parte dei moduli inclusi standard che sono standard e opzionali nel tarball di origine from-nginx, così come molti altri moduli di terze parti progettati per estendere le capacità del server web nginx. I suoi moduli sono i seguenti:

    MODULI HTTP STANDARD: Core, Access, Auth Basic, Auto Index, Browser, Charset, GIF vuota, FastCGI, Geo, Gzip, Headers, Index, Limit Requests, Limit Zone, Log, Map, Memcached, Proxy, Referer, Rewrite, SCGI , Split Client, SSI, Upstream, ID utente, UWSGI.

    MODULI HTTP OPZIONALI: Aggiunta, Richiesta di autenticazione, Debug, GeoIP, Precompressione Gzip, Sottotitolo HTTP, Filtro immagine, IPv6, IP reale, Spdy, SSL, Stato stub, Sostituzione, WebDAV, XSLT.

    MODULI MAIL: Mail Core, IMAP, POP3, SMTP, SSL.

    MODULI DI TERZE PARTI: Auth PAM, DAV Ext, Echo, filtro di sostituzione HTTP, coda fiera a monte.

  • nginx-extrasè il sapore più ricco di funzionalità del nginxpacchetto. E come i suoi fulle lightfratelli, che è anche nel repository Universe. Abilita tutti i moduli nginx-fullma include anche moduli aggiuntivi (come il modulo Perl) e molti altri moduli di terze parti progettati per estendere ulteriormente le capacità del server Web nginx. L'elenco completo dei moduli è di seguito:

    MODULI HTTP STANDARD: Core, Access, Auth Basic, Auto Index, Browser, Charset, GIF vuota, FastCGI, Geo, Gzip, Headers, Index, Limit Requests, Limit Zone, Log, Map, Memcached, Proxy, Referer, Rewrite, SCGI , Split Client, SSI, Upstream, ID utente, UWSGI.

    MODULI HTTP OPZIONALI: Aggiunta, Richiesta di autenticazione, Debug, Perl incorporato, FLV, GeoIP, Precompressione Gzip, Filtro immagine, IPv6, MP4, Indice casuale, IP reale, Collegamento sicuro, Spdy, SSL, Stato stub, Sostituzione, WebDAV, XSLT.

    MODULI MAIL: Mail Core, IMAP, POP3, SMTP, SSL.

    MODULI DI TERZI: Auth PAM, Chunkin, DAV Ext, Echo, Embedded Lua, Fancy Index, HttpHeadersMore, Filtro di sostituzione HTTP, push http, Kit di sviluppo Nginx, Caricamento avanzamento, Coda fiera a monte.

  • nginx-naxsiè la variante di nginx che ha il modulo Naxsi Web Application Firewall disponibile. Anch'esso è nell'universo, tuttavia questo sapore non è più supportato dai manutentori Debian e sarà completamente abbandonato da Ubuntu con la versione 15.04. Oltre al modulo Naxsi WAF, include anche un set di moduli molto più leggero di nginx-full. L'elenco completo dei moduli è di seguito:

    MODULI HTTP STANDARD: Core, Access, Auth Basic, Auto Index, Browser, Charset, Core, Empty GIF, FastCGI, Geo, Gzip, Headers, Index, Limit Requests, Limit Zone, Log, Map, Memcached, Proxy, Referer, Rewrite , Split Client, SSI, Upstream, ID utente.

    MODULI HTTP OPZIONALI: Debug, IPv6, IP reale, SSL, Stub Status.

    MODULI DI TERZI: Naxsi, Cache Purge, Upstream Fair.


Utilizzo delle risorse tra i sapori

Anche se non sono a conoscenza di parametri di riferimento che sono stati eseguiti sui vari tipi di nginx, è in genere logico supporre che quanto più la versione di nginxte viene abilitata per le funzionalità, tanto più risorse utilizzerà.

Tuttavia, a differenza di Apache che può essere una sorta di puttana di memoria con più moduli abilitati, nginxnon consuma ancora tanta memoria rispetto ad Apache quando i moduli sono abilitati. (L'eccezione a questa affermazione è il naxsisapore. Quel sapore consuma sempre molte più risorse, in quanto è un Web Application Firewall e un web server.)

Aggiungerò parametri di riferimento a questa risposta se li trovo, ma ancora una volta non sono a conoscenza di parametri di riferimento esistenti per i vari gusti l'uno contro l'altro. E anche se i siti corro non hanno traffico pesante, non ho notato alcuna reale riduzione delle prestazioni tra i nginx-extras, nginx-fullo nginx-lightsu un sito PHP-driven.


Canonico davvero. L'intera questione è iniziata quando ho visto questa linea nel mio error.logdopo che ho installato nginx-extra: [info] 19936#0: Using 32768KiB of shared memory for push module in /etc/nginx/nginx.conf. È condiviso e non RSS, ma mi ha ancora fatto meravigliare. Da qui i dubbi sulle prestazioni, ma questo è secondario.
Muru,

2
@muru il pushmodulo è ben noto per l'utilizzo di una buona quantità di memoria condivisa. Per quanto ne sappia (e potrei sbagliarmi leggermente su questo), la memoria condivisa viene utilizzata in tutti i siti sul server Web in cui è possibile utilizzare il modulo push. Tuttavia, quel modulo è un modulo di terze parti, quindi qualsiasi problema reale dovrebbe essere diretto verso i loro manutentori :)
Thomas Ward

1
No, nessun problema. Entrano in una delle versioni più recenti del tuo PPA backports? E dal momento che sono presumibilmente costruiti dalla stessa fonte, una patch applicata dal team di sicurezza nginx-coresarebbe anche a disposizione -fulle -extra, giusto?
Muru,

3
@muru Sfortunatamente, il packaging nelle versioni nei PPA è fatto separatamente da Ubuntu. Attualmente, diventa molto complicato eseguire il backport del pacchetto su versioni precedenti - alla fine viene eseguito nel PPA perché non devo fare confusione con l'unione delle modifiche Debian nelle modifiche Ubuntu. Dopo l'inclusione principale, non ho studiato il backporting, perché ci sarebbero molte modifiche che dovrebbero essere eliminate per corrispondere a ciò che è disponibile nelle versioni precedenti. (e le gocce del pacchetto naxsi ora rendono impossibile il backport delle versioni 15.04).
Thomas Ward

2
@muru E sì, tutte le patch applicate come aggiornamenti di sicurezza (o come aggiornamenti di versione standard) in 14.04 e successive si applicheranno nginx-corecosì come alle altre versioni nginxdisponibili in quel repository, poiché si basano tutte sulla stessa base di codice. Hanno solo ./configurelinee diverse per abilitare o disabilitare moduli diversi.
Thomas Ward

14

Ecco una valutazione di altissimo livello, basata principalmente sulle descrizioni nei pacchetti . (Non riuscirò a fornire casi d'uso esemplificativi per ciascuno, ma ho capito molto per soddisfare la mia curiosità, quindi potrei anche contribuire.)

Dal più piccolo al più grande:

nginx-light: "versione base"

Il set minimo di moduli per funzionalità di base.

nginx-naxsi: "versione con naxsi"

Il set minimo, oltre alla configurazione "Nginx Anti Xss & Sql Injection" rinforzata e ai plug-in richiesti.

nginx-core: "versione core"

La distribuzione standard di nginx, meno i moduli di terze parti.

Questo è il primo pacchetto nginx supportato da Canon. Si trova nel repository "principale" di Ubuntu anziché nel repository "universo" supportato dalla comunità. Vedi l'annuncio "nginx-core è ora in Ubuntu Trusty 14.04 Main!" su un archivio del blog non ufficiale del manutentore (più vecchio e ora defunto) o sulla copia del vecchio post sul blog non ufficiale del manutentore :

nessuno dei sapori già consolidati di nginx è incluso in Ubuntu Main (nginx-light, nginx-full, nginx-extra e nginx-naxsi). Il team di sicurezza di Ubuntu ha affermato che i moduli di terze parti sono molto diversi nella codifica e pertanto non possono essere supportati.

A tal fine, abbiamo creato un pacchetto chiamato nginx-core che è stato incluso nel repository principale. Questo pacchetto contiene solo i moduli forniti con il tarball di stock nginx. Non includiamo moduli di terze parti con questo pacchetto, ma solo i moduli che provengono da NGINX a monte.

nginx-full: "versione standard"

La distribuzione standard di nginx, inclusi i moduli di terze parti utilizzati di frequente.

nginx-extra: "versione estesa"

La distribuzione standard di nginx più numerosi moduli usati di rado e di grandi dimensioni.


1
Una cosa: a quanto ho capito, nginxnon supporta l'abilitazione di moduli come Apache, quindi l'installazione nginx-extraspotrebbe influire sulle prestazioni?
muru,

1
naxsi è incluso solo in -naxsi e -extras, non -core o -full. L'uso di -extras avrà probabilmente un impatto sulle prestazioni, sicuramente più consumo di memoria rispetto a un pacchetto più leggero.
Steven K,

2
Questo è scaduto. Pubblicherò una dichiarazione più completa su questo, poiché ho molta influenza riguardo al pacchetto nginx.
Thomas Ward

1
@ThomasW. Wow, non sei il tipo che ho citato sopra dal "blog del manutentore"?
Steven K,

1
@StevenKath Yeppers, e ho anche toccato quel punto sulla mia risposta. Ho dovuto mettere offline il blog precedente perché Wordpress era un framework malvagio, ma il punto è ancora valido. Sono tutt'altro che il "manutentore ufficiale" di Ubuntu, ma probabilmente faccio la maggior manutenzione sul pacchetto e sono probabilmente considerato il "manutentore non ufficiale".
Thomas Ward
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.