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

62

nginx su Ubuntu è un pacchetto virtuale fornito da uno dei cinque pacchetti dai repository ufficiali (a almeno dal 14.04, predefinito 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 pagina Wiki di Debian un po 'vecchia ha un confronto tra le funzioni extras , full , light e naxsi , ma non viene fatta menzione di core . Quanto è cambiato nel 14.04?

secondario A quanto ho capito, nginx non supporta l'abilitazione al runtime di moduli come Apache, quindi installare nginx-extras ha impatto sulle prestazioni?

    
posta muru 27.11.2014 - 08:40

2 risposte

84

Mentre la risposta di Steven tocca i punti chiave e un riassunto molto semplice di ciò che è ogni sapore, ti darò una descrizione molto più ampia delle differenze, mentre lavoro sulla confezione un po 'e le serie molto diverse di moduli in ciascuno è assolutamente fondamentale per una buona risposta. Le descrizioni di base non rendono molto giustizia al confronto. (Inoltre, i miei complimenti a Steven che citano il mio blog più vecchio (e mi hanno anche indicato come "manutentore".) Intendevo portare il post di nginx-is-coming-to-main al mio nuovo blog, ma non ho avuto l'opportunità .)

Si noti inoltre che gli ultimi pacchetti per il server Web NGINX sono disponibili nei PPA NGINX, gestiti da me stesso, basati quasi interamente su Debian. ( PPA stabile (1.6.2 di questo post); MPA linea principale (1.7.7 di questo post, con 1.7.8 previsto per sbarcare 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 ) oltre al minimo indispensabile e alla maggior parte delle funzionalità -effettiva serie di funzioni "complete" che i server Web tendono ad utilizzare nei siti Web. La ragione esatta per cui una caratteristica è stata scelta rispetto ad un'altra non mi è nota, tuttavia nella discussione supplementare con uno dei manutentori Debian su IRC, è stata fatta una affermazione affermando la mia valutazione iniziale, che ciascuna variante era destinata ad essere un insieme diverso di funzioni per un caso d'uso diverso - light per un set leggero di funzionalità che soddisfa il minimo dell'hosting del sito, full per un set più completo di funzionalità senza includere alcun extra molto più pesante e extras per praticamente tutto ciò che è nel pacchetto che può essere incluso in Ubuntu. naxsi , precedente al 15.04, era la variante Naxsi specificatamente con solo il minimo di moduli al suo interno, dato che naxsi poteva essere abbastanza dispendioso in termini di risorse.

Presumibilmente, secondo uno dei maintainer Debian di NGINX che si sta regolarmente coordinando con Upstream NGINX in una conversazione privata di cui non posso attualmente registrare i log, NGINX 2.x avrà il supporto del modulo caricabile. In tal caso, light , full e extras diventeranno metapacchetti che invocano i singoli pacchetti contenenti ciascun modulo. La data in cui questo è il caso non è nota, tuttavia, né i moduli saranno effettivamente in grado di farlo.

Allo stato attuale, il pacchetto virtuale nginx è progettato per installare solo una delle versioni disponibili. Per impostazione predefinita, poiché nginx-core è in main e ci piacerebbe se gli individui lo usassero di più, nginx-core è il primo elemento visto e installato-tentato nel pacchetto virtuale. (Tuttavia, il pacchetto nginx può contare su uno qualsiasi degli aromi di nginx , ed è principalmente lì per rendere l'installazione un po 'più semplice per coloro che non hanno bisogno di preferenze di gusto specifiche)

Un'analisi dettagliata con i moduli specifici disponibili in ogni variante (basata su Vivid debian/control file e Trusty debian/control file (dato che i pacchetti Naxsi sono stati rimossi in Vivid)) è disponibile sotto. Nota che questo non riflette le modifiche più aggiornate in Ubuntu e dovresti fare riferimento a queste descrizioni del pacchetto per assicurarti di avere informazioni aggiornate e precise :

  • nginx-core è l'unico aroma nella sezione Main dei repository di Ubuntu, dal 14.04, ed esiste solo nei repository di Ubuntu (e non è nel PPA o Debian, e non sarà mai incluso in Debian). È effettivamente identico al sapore nginx-full , ma non contiene moduli di terze parti. Il ragionamento alla base dell'uso di nginx-full come base per questa variante era che volevamo fornire un set di moduli core relativamente completo nei binari compilati, mantenendo allo stesso tempo i moduli di terze parti. In quanto tale, non contiene nessuno dei moduli di terze parti, dal momento che 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 così ben supportati come il nginx-tarball incluso moduli (questo è discusso in modo più approfondito nel bug di richiesta / segnalazione principale , che contiene i punti di discussione e ulteriori discussioni sulle discussioni su cosa potrebbe essere incluso in Ubuntu Main per nginx ).Un elenco completo dei moduli attivati ​​qui è incluso nella descrizione del pacchetto, che ho selezionato nitpick qui:

      

    MODULI HTTP STANDARD: Core, Access, Auth Basic, Auto Index, Browser,   Charset, GIF vuoto, FastCGI, Geo, Gzip, intestazioni, indice, richieste limite,   Zona limite, registro, mappa, memcached, proxy, referer, riscrittura, SCGI,   Dividi client, SSI, Upstream, ID utente, UWSGI.

         

    MODULI HTTP OPZIONALI: Aggiunta, Debug, GeoIP, Precompressione Gzip, Sottotitolo HTTP,   Filtro immagine, IPv6, Real IP, Spdy, SSL, Stub Status, Sostituzione, WebDAV,   XSLT.

         

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

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

      

    MODULI HTTP STANDARD: Core, Access, Auth Basic, Auto Index, Charset,   GIF vuote, FastCGI, Gzip, intestazioni, indice, registro, mappa, proxy, riscrittura, upstream.

         

    MODULI HTTP OPZIONALI: richiesta di autorizzazione, debug, precompressione Gzip, IPv6, reale   Ip, SSL, Stub Status.

         

    MODULI DI TERZE PARTI: Echo.

  • nginx-full è uno dei sapori più ricchi di funzionalità del pacchetto nginx . Come la sua controparte light , è nel repository Universe. Abilita la maggior parte dei moduli inclusi di base che sono standard e facoltativi nel tarball del codice from-nginx, nonché numerosi altri moduli di terze parti progettati per estendere le funzionalità del server Web nginx. I suoi moduli sono i seguenti:

      

    MODULI HTTP STANDARD: Core, Access, Auth Basic, Auto Index, Browser,   Charset, GIF vuoto, FastCGI, Geo, Gzip, intestazioni, indice, richieste limite,   Zona limite, registro, mappa, memcached, proxy, referer, riscrittura, SCGI,   Dividi client, SSI, Upstream, ID utente, UWSGI.

         

    MODULI HTTP OPZIONALI: Aggiunta, Richiesta di autorizzazione, Debug, GeoIP, Gzip   Precompressione, HTTP Sub, Filtro immagine, IPv6, Real IP, Spdy, SSL, Stub Status,   Sostituzione, WebDAV, XSLT.

         

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

         

    MODULI DI TERZE PARTI: Auth PAM, DAV Ext, Echo, Filtro di sostituzione HTTP,   Coda giusta a monte.

  • nginx-extras è l'aroma più ricco di funzionalità del pacchetto nginx . E come i suoi full e light brothers, anche questo è nel repository Universe. Abilita tutti i moduli in nginx-full ma include anche moduli aggiuntivi (come il modulo Perl) e molti altri moduli di terze parti progettati per estendere ulteriormente le funzionalità del server Web nginx. La lista completa dei moduli è la seguente:

      

    MODULI HTTP STANDARD: Core, Access, Auth Basic, Auto Index, Browser,   Charset, GIF vuoto, FastCGI, Geo, Gzip, intestazioni, indice, richieste limite,   Zona limite, registro, mappa, memcached, proxy, referer, riscrittura, SCGI,   Dividi client, SSI, Upstream, ID utente, UWSGI.

         

    MODULI HTTP OPZIONALI: Aggiunta, Richiesta di autorizzazione, Debug, Perl incorporato, FLV,   GeoIP, Precompressione Gzip, Filtro immagine, IPv6, MP4, Indice casuale, IP reale,   Secure Link, Spdy, SSL, Stub Status, Sostituzione, WebDAV, XSLT.

         

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

         

    MODULI DI TERZE PARTI: Auth PAM, Chunkin, DAV Ext, Echo, Embedded Lua,   Fancy Index, HttpHeadersMore, HTTP Substitution Filter, http push,   Kit di sviluppo Nginx, avanzamento caricamento, coda giusta a monte.

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

      

    MODULI HTTP STANDARD: Core, Access, Auth Basic, Auto Index, Browser,   Charset, Core, GIF vuoto, FastCGI, Geo, Gzip, Intestazioni, Indice,   Richieste limite, Zona limite, Registro, Mappa, Memcached, Proxy, Referer,   Riscrivi, Split Client, SSI, Upstream, User ID.

         

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

         

    MODULI DI TERZE PARTI: Naxsi, Cache Purge, Upstream Fair.

Utilizzo delle risorse tra gli aromi

Anche se non sono a conoscenza di benchmark che sono stati eseguiti sui vari sapori di nginx , è logico assumere che più è abilitata per le funzionalità la versione di nginx che usi, più risorse sarebbe utilizzare.

Tuttavia, a differenza di Apache che può essere qualcosa di una puttana della memoria con più moduli abilitati, nginx continua a non consumare più memoria rispetto ad Apache quando i moduli sono abilitati. (L'eccezione a questa affermazione è il sapore naxsi .Quel sapore mangia sempre molte più risorse, dato che è un Web Application Firewall e un web server.)

Aggiungerò dei benchmark a questa risposta se li trovo, ma ancora una volta, non sono a conoscenza di alcun benchmark esistente per i vari gusti l'uno contro l'altro. E anche se i siti che corro non hanno traffico intenso, non ho notato alcuna riduzione delle prestazioni reali tra nginx-extras , nginx-full o nginx-light su un sito gestito da PHP.

    
risposta data Thomas Ward 04.12.2014 - 01:27
12

Ecco una valutazione di alto livello, basata principalmente su le descrizioni nei pacchetti . (Non riuscirò a fornire casi d'uso di esempio per ciascuno, ma ho pensato questo per soddisfare la mia curiosità, quindi potrei anche dargli un contributo.)

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" avanzata e ai plugin richiesti.

nginx-core: "versione core"

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

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

  

nessuno dei sapori già noti di nginx è incluso in Ubuntu Main (nginx-light, nginx-full, nginx-extras 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 nginx di riserva. Non includiamo moduli di terze parti con questo pacchetto, solo i moduli che provengono da NGINX a monte.

nginx-full: "versione standard"

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

nginx-extras: "versione estesa"

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

    
risposta data Steven K 04.12.2014 - 00:25

Leggi altre domande sui tag