Was ist der Unterschied zwischen den Kern-, Voll-, Extras- und Light-Paketen für Nginx?

72

nginxon Ubuntu ist ein virtuelles Paket, das von einem von fünf Paketen aus den offiziellen Repositories bereitgestellt wird (mindestens ab 14.04, standardmäßig nginx-core, glaube ich):

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

Was ist der Unterschied zwischen diesen Paketen und welche Anwendungsfälle werden für sie empfohlen?

Diese etwas alte Debian - Wiki - Seite hat einen Vergleich der Leistungsmerkmale extras, full, lightund naxsi, aber keine Erwähnung ist aus core. Wie viel hat sich in 14.04 verändert?


Sekundär Wie ich es verstehe, nginxunterstützt keine Laufzeit von Modulen ermöglicht wie Apache funktioniert, so würde die Installation von nginx-extrasSchlagleistung?

muru
quelle
1
Jemand hat anscheinend eine neuere Version der Funktionsvergleichstabelle erstellt und diese in Google Text
Steven K
1
@StevenKath notieren, dass DIESES Dokument ausschließlich auf Debian basiert. Es berührt nicht den Nginx-Kern und enthält nicht die instabilen Änderungen, die das Naxsi-Aroma entfernen (weil es nicht trivial zu pflegen ist).
Thomas Ward

Antworten:

99

Während die Antwort von Steven die wichtigsten Punkte und eine sehr grundlegende Zusammenfassung der einzelnen Geschmacksrichtungen anspricht, werde ich Ihnen die Unterschiede, die sich aus meiner Arbeit an der Verpackung ergeben, und die sehr unterschiedlichen Sätze von Modulen in der Verpackung näher erläutern Jeder ist absolut entscheidend für eine gute Antwort. Die Grundbeschreibungen werden dem Vergleich nicht sehr gerecht. (Außerdem ein großes Lob an Steven, der mein älteres Blog zitiert (und mich sogar als "Betreuer" bezeichnet). Ich wollte den Nginx-Coming-To-Main-Beitrag auf mein neueres Blog portieren, hatte aber keine Gelegenheit dazu .)

Beachten Sie auch, dass die neuesten Pakete für den NGINX-Webserver in den von mir gepflegten NGINX-PPAs verfügbar sind, die fast ausschließlich auf Debian basieren. ( Stabiles PPA (1.6.2 ab diesem Post); Haupt- PPA (1.7.7 ab diesem Post, 1.7.8 soll am 4. Dezember 2014 landen)


Die verschiedenen Geschmacksrichtungen von nginx:

Die verschiedenen Geschmacksrichtungen sind alle die gleiche Version von nginx, jedoch wurden die Geschmacksrichtungen von den Betreuern des Debian-Pakets ausgewählt, um verschiedene Funktionssätze (für nginx-extras) sowie das absolute Minimum und den effektivsten 'vollständigen' Funktionssatz bereitzustellen , der Webserver werden in der Regel in Websites verwendet. Der genaue Grund, warum ein Feature gegenüber einem anderen ausgewählt wurde, ist mir nicht bekannt. In einer ergänzenden Diskussion mit einem der Debian-Betreuer im IRC wurde jedoch eine Aussage getroffen, die meine anfängliche Einschätzung bestätigte, dass für jede Variante ein anderer Satz von Features vorgesehen war ein anderer Anwendungsfall - lightfür ein leichtgewichtiges Set an Funktionen, das ein Minimum an Site-Hosting erfüllt, fullfür ein umfassenderes Set an Funktionen, ohne viel schwerere Extras einzubeziehen, undextrasfür so ziemlich alles, was in dem Paket enthalten ist, das in Ubuntu enthalten sein kann. naxsiVor dem 15.04. war die Naxsi-Variante speziell mit nur einem Minimum an Modulen ausgestattet, da Naxsi relativ ressourcenintensiv sein kann.

Angeblich wird NGINX 2.x laut einem der Debian-Betreuer von NGINX, der sich regelmäßig mit Upstream NGINX in einer privaten Unterhaltung abstimmt, von der ich derzeit keine Protokolle posten kann, Unterstützung für ladbare Module haben. In diesem Fall werden light, fullund extraszu Metapaketen, die die einzelnen Pakete aufrufen, die die einzelnen Module enthalten. Das Datum, an dem dies der Fall ist, ist jedoch nicht bekannt und auch nicht, welche Module dies tatsächlich können.

Aus heutiger Sicht ist das nginxvirtuelle Paket so konzipiert, dass nur eine der verfügbaren Versionen installiert wird. Standardmäßig ist das erste Element, das im virtuellen Paket gesehen und installiert wird , wie nginx-corees in main beschrieben ist, und wir würden es begrüßen, wenn Einzelpersonen es häufiger verwenden würden nginx-core. (Die nginxVerpackung kann sich jedoch auf eine der Geschmacksrichtungen von verlassen nginxund ist hauptsächlich dazu da, die Installation für diejenigen, die keine bestimmte Geschmacksrichtung bevorzugen, ein wenig zu vereinfachen.)

Eine detaillierte Aufschlüsselung der in jeder Variante verfügbaren Module (basierend auf der Vivid- debian/controlDatei und der Trusty- debian/controlDatei (da die Naxsi-Pakete in Vivid entfernt wurden)) finden Sie weiter unten. Beachten Sie, dass dies nicht die aktuellsten Änderungen in Ubuntu widerspiegelt, und Sie sollten sich auf diese Paketbeschreibungen beziehen, um sicherzustellen, dass Sie über aktualisierte, genaue Informationen verfügen :

  • nginx-coreist die einzige Variante im Hauptabschnitt der Ubuntu-Repositories ab 14.04 und existiert nur in den Ubuntu-Repositories (und ist nicht in den PPAs oder Debian enthalten und wird in Debian niemals enthalten sein). Es ist praktisch identisch mit dem nginx-fullGeschmack, enthält jedoch keine Module von Drittanbietern. Die Gründe für die Verwendung vonnginx-fullAls Basis für diese Variante wollten wir einen relativ vollständigen Satz von Kernmodulen in den erstellten Binärdateien bereitstellen und gleichzeitig Module von Drittanbietern fernhalten. Als solches enthält es keine Module von Drittanbietern, da das Sicherheitsteam eine Überprüfung des Codes durchführte und feststellte, dass Module von Drittanbietern sehr unterschiedliche Codierungsstile aufweisen, die nicht so gut unterstützt werden wie die in nginx-tarball-included enthaltenen Module (dies wird ausführlicher im Main Inclusion Request / Report-Bug besprochen , der die Diskussionspunkte und weitere Überprüfungsdiskussionen darüber enthält, wofür Ubuntu Main enthalten sein könnte nginx). Eine vollständige Liste der hier aktivierten Module finden Sie in der Paketbeschreibung, die ich hier nicht ausgewählt habe:

    STANDARD-HTTP-MODULE: Kern, Zugriff, Auth Basic, Auto-Index, Browser, Zeichensatz, leeres GIF, FastCGI, Geo, Gzip, Header, Index, Grenzanforderungen, Grenzzone, Protokoll, Karte, Memcached, Proxy, Referer, Rewrite, SCGI , Split Clients, SSI, Upstream, Benutzer-ID, UWSGI.

    OPTIONALE HTTP-MODULE: Hinzufügen, Debuggen, GeoIP, Gzip-Vorkomprimierung, HTTP-Sub, Bildfilter, IPv6, Real IP, Spdy, SSL, Stub-Status, Substitution, WebDAV, XSLT.

    MAIL-MODULE: Mail Core, IMAP, POP3, SMTP, SSL.

  • nginx-lightist der leichteste Geschmack, den nginxes gibt. Es befindet sich im Universum-Repository und muss aktiviert sein, damit Sie es verwenden können. Eine große Anzahl der in -coreoder verfügbaren Module wird nicht aktiviert -full. Es enthält auch Module von Drittanbietern. Die darin verfügbaren Module sind wie folgt:

    STANDARD-HTTP-MODULE: Kern, Zugriff, Auth Basic, Auto-Index, Zeichensatz, leeres GIF, FastCGI, Gzip, Header, Index, Protokoll, Karte, Proxy, Umschreiben, Upstream.

    OPTIONALE HTTP-MODULE: Authentifizierungsanforderung, Debugging, Gzip-Vorkomprimierung, IPv6, Real IP, SSL, Stub-Status.

    DRITTMODULE: Echo.

  • nginx-fullist einer der funktionsreicheren Geschmacksrichtungen des nginxPakets. Wie sein lightGegenstück befindet es sich im Universum-Repository. Es aktiviert die meisten der im Quell-Tarball von nginx standardmäßig und optional enthaltenen Kernmodule sowie mehrere weitere Module von Drittanbietern, mit denen die Funktionen des nginx-Webservers erweitert werden sollen. Die Module sind wie folgt:

    STANDARD-HTTP-MODULE: Kern, Zugriff, Auth Basic, Auto-Index, Browser, Zeichensatz, leeres GIF, FastCGI, Geo, Gzip, Header, Index, Grenzanforderungen, Grenzzone, Protokoll, Karte, Memcached, Proxy, Referer, Rewrite, SCGI , Split Clients, SSI, Upstream, Benutzer-ID, UWSGI.

    OPTIONALE HTTP-MODULE: Hinzufügen, Authentifizierungsanforderung, Debuggen, GeoIP, Gzip-Vorkomprimierung, HTTP-Sub, Bildfilter, IPv6, echte IP, Spdy, SSL, Stub-Status, Substitution, WebDAV, XSLT.

    MAIL-MODULE: Mail Core, IMAP, POP3, SMTP, SSL.

    DRITTMODULE: Auth PAM, DAV Ext, Echo, HTTP-Substitutionsfilter, Upstream Fair Queue.

  • nginx-extrasist der funktionsreichste Geschmack der nginxPackung. Und wie sein fullund seine lightBrüder befindet es sich auch im Universum-Repository. Es aktiviert alle Module in nginx-full, enthält aber auch zusätzliche Module (wie das Perl-Modul) und viele weitere Module von Drittanbietern, mit denen die Funktionen des nginx-Webservers noch weiter erweitert werden können. Die vollständige Liste der Module finden Sie unten:

    STANDARD-HTTP-MODULE: Kern, Zugriff, Auth Basic, Auto-Index, Browser, Zeichensatz, leeres GIF, FastCGI, Geo, Gzip, Header, Index, Grenzanforderungen, Grenzzone, Protokoll, Karte, Memcached, Proxy, Referer, Rewrite, SCGI , Split Clients, SSI, Upstream, Benutzer-ID, UWSGI.

    OPTIONALE HTTP-MODULE: Hinzufügen, Authentifizierungsanforderung, Debuggen, Eingebettetes Perl, FLV, GeoIP, Gzip-Vorkomprimierung, Bildfilter, IPv6, MP4, Zufallsindex, Real IP, Sichere Verbindung, Spdy, SSL, Stub-Status, Substitution, WebDAV, XSLT.

    MAIL-MODULE: Mail Core, IMAP, POP3, SMTP, SSL.

    DRITTMODULE: Auth PAM, Chunkin, DAV Ext, Echo, Embedded Lua, Fancy Index, HTTP HeadersMore, HTTP Substitution Filter, HTTP Push, Nginx Development Kit, Upload-Fortschritt, Upstream Fair Queue.

  • nginx-naxsiist die Variante von nginx, für die das Naxsi Web Application Firewall-Modul verfügbar ist. Es ist ebenfalls im Universum, jedoch wird diese Variante von Debian-Betreuern nicht mehr unterstützt und wird mit dem Release 15.04 vollständig aus Ubuntu entfernt. Zusätzlich zum Naxsi WAF-Modul enthält es auch einen viel leichteren Satz von Modulen als nginx-full. Die vollständige Liste der Module finden Sie unten:

    STANDARD-HTTP-MODULE: Kern, Zugriff, Auth Basic, Auto-Index, Browser, Zeichensatz, Kern, leeres GIF, FastCGI, Geo, Gzip, Header, Index, Grenzanforderungen, Grenzzone, Protokoll, Karte, Memcached, Proxy, Referer, Rewrite , Split Clients, SSI, Upstream, Benutzer-ID.

    OPTIONALE HTTP-MODULE: Debug, IPv6, Real IP, SSL, Stub-Status.

    DRITTMODULE: Naxsi, Cache Purge, Upstream Fair.


Ressourcennutzung unter den Aromen

Obwohl mir keine Benchmarks bekannt sind, die für die verschiedenen nginxVarianten von ausgeführt wurden, ist es in der Regel logisch anzunehmen, dass je funktionsfähiger die von nginxIhnen verwendete Version ist , desto mehr Ressourcen würden verwendet.

Im Gegensatz zu Apache, bei dem es sich um eine Art Speicherhure mit mehr aktivierten Modulen handeln kann, nginxwird jedoch im Vergleich zu Apache bei aktivierten Modulen immer noch nicht so viel Speicher benötigt. (Die Ausnahme zu dieser Anweisung ist die naxsiVariante. Diese Variante beansprucht immer viel mehr Ressourcen, da es sich um eine Webanwendungsfirewall sowie einen Webserver handelt.)

Ich werde dieser Antwort Benchmarks hinzufügen, wenn ich sie finde, aber auch hier sind mir keine vorhandenen Benchmarks für die verschiedenen Geschmacksrichtungen gegeneinander bekannt. Und auch wenn die Seiten , die ich laufen habe nicht vielen Verkehr, ich habe keinen wirklichen Leistungsabfall zwischen bemerkt nginx-extras, nginx-fulloder nginx-lightauf einer PHP-driven Website.

Thomas Ward
quelle
In der Tat kanonisch. Diese ganze Frage begann , als ich diese Linie sah in meinem error.lognachdem ich installiert nginx-extra: [info] 19936#0: Using 32768KiB of shared memory for push module in /etc/nginx/nginx.conf. Es ist geteilt und kein RSS, aber ich habe mich trotzdem gewundert. Daher die Performance-Zweifel, aber das ist zweitrangig.
Muru
2
@muru Das pushModul ist bekannt dafür, dass es ein gutes Stück Shared Memory verwendet. Meines Wissens (und möglicherweise irre ich mich dabei) wird der gemeinsam genutzte Speicher auf allen Websites auf dem Webserver verwendet, auf denen das Push-Modul verwendet werden kann. Dieses Modul ist jedoch ein Modul von Drittanbietern, daher sollten alle tatsächlichen Probleme an deren Betreuer gerichtet werden :)
Thomas Ward
1
Nein, keine Probleme. Kommt eine der neueren Versionen von Ihrem PPA in Frage backports? Und da sie vermutlich aus derselben Quelle gebaut, ein vom Sicherheitsteam angewandt Patch nginx-corewäre auch zur Verfügung -fullund -extra, nicht wahr?
Muru
3
@muru Leider erfolgt das Packen in den Versionen in den PPAs getrennt von Ubuntu. Gegenwärtig wird es sehr schwierig, das Paket auf ältere Releases zurück zu portieren - dies geschieht letztendlich in der PPA, weil ich mich nicht mit dem Zusammenführen von Debian-Änderungen in Ubuntu-Änderungen herumschlagen muss. Seit dem Main Inclusion habe ich das Backporting nicht mehr untersucht, da es viele Änderungen geben würde, die gelöscht werden müssten, um mit den in älteren Releases verfügbaren Änderungen übereinzustimmen. (und die Naxsi-Paket-Drops machen das Backportieren von 15.04-Versionen jetzt unmöglich).
Thomas Ward
2
@muru Und ja, alle Patches, die in 14.04 und höher als Sicherheitsupdates (oder als Standard-Release-Updates) angewendet wurden, gelten nginx-coreauch für die anderen nginxin diesem Repository verfügbaren Versionen, da sie alle auf derselben Codebasis basieren. Sie haben nur verschiedene ./configureLeitungen, um verschiedene Module zu aktivieren oder zu deaktivieren.
Thomas Ward
14

Hier ist eine sehr allgemeine Einschätzung, die hauptsächlich auf den Beschreibungen in den Paketen basiert . (Ich werde es nicht schaffen, für jedes Beispiel Anwendungsfälle zu liefern, aber ich habe dies herausgefunden, um meine Neugier zu befriedigen, damit ich es auch beisteuern kann.)

Vom kleinsten zum größten:

nginx-light: "Basisversion"

Der minimale Satz von Modulen für die Grundfunktionalität.

nginx-naxsi: "version mit naxsi"

Das minimale Set plus die gehärtete "Nginx Anti Xss & Sql Injection" -Konfiguration und die erforderlichen Plugins.

nginx-core: "core version"

Die Standard-Nginx-Bereitstellung, abzüglich der Module von Drittanbietern.

Dies ist das erste von Canonical unterstützte Nginx-Paket. Es befindet sich im "Haupt" -Repository von Ubuntu anstelle des von der Community unterstützten "Universums" -Repositorys. Siehe die Ankündigung "Nginx-Core ist jetzt in Ubuntu Trusty 14.04 Main!" In einem Archiv des inoffiziellen Blogs des Betreuers (älter und nicht mehr vorhanden) oder auf der Kopie des alten Posts im inoffiziellen Blog des Betreuers :

Keine der bereits bekannten Nginx-Varianten ist in Ubuntu Main enthalten (Nginx-Light, Nginx-Full, Nginx-Extras und Nginx-Naxsi). Das Ubuntu-Sicherheitsteam hat erklärt, dass die Module von Drittanbietern sich in der Codierung stark unterscheiden und daher nicht unterstützt werden können.

Zu diesem Zweck haben wir ein Paket namens nginx-core erstellt, das im Haupt-Repository enthalten ist. Dieses Paket enthält nur die Module, die mit dem Standard-Nginx-Tarball geliefert werden. In diesem Paket sind keine Module von Drittanbietern enthalten, sondern nur die Module, die von NGINX Upstream stammen.

nginx-full: "standard version"

Die Standard-Nginx-Bereitstellung, einschließlich häufig verwendeter Module von Drittanbietern.

Nginx-Extras: "Extended Version"

Die Standard-Nginx-Bereitstellung plus mehrere selten verwendete und umfangreiche Module.

Steven K
quelle
1
Eine Sache: Wie ich es verstehe, nginxwird die Aktivierung von Modulen wie Apache nicht unterstützt. Würde die Installation also nginx-extrasdie Leistung beeinträchtigen?
muru
1
naxsi ist nur in -naxsi und -extras enthalten, nicht in -core oder -full. Die Verwendung von -extras hat wahrscheinlich Leistungseinbußen, mit Sicherheit einen höheren Speicherverbrauch als ein leichteres Paket.
Steven K
2
Das ist veraltet. Ich werde eine vollständigere Erklärung dazu abgeben, da ich großen Einfluss auf das nginx-Paket habe.
Thomas Ward
1
@ThomasW. Wow, bist du nicht der Typ, den ich oben aus dem "Blog des Betreuers" zitiert habe?
Steven K
1
@StevenKath Yeppers, und ich habe sogar diesen Punkt in meiner Antwort angesprochen. Ich musste den vorherigen Blog offline schalten, weil Wordpress ein schlechtes Framework ist, aber der Punkt bleibt bestehen. Ich bin weit entfernt vom offiziellen Betreuer in Ubuntu, aber ich mache wahrscheinlich die meisten Wartungsarbeiten am Paket und werde wahrscheinlich als der inoffizielle Betreuer angesehen.
Thomas Ward