Quelle est la différence entre les packages principaux, complets, supplémentaires et légers pour nginx?

72

nginxsur Ubuntu est un paquet virtuel fourni par l’un des cinq paquets des référentiels officiels (au moins à partir de 14.04, à défaut nginx-core, je crois):

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

Quelle est la différence entre ces packages et quels sont les cas d'utilisation recommandés pour ceux-ci?

Ce peu vieux Wiki Debian a une comparaison entre les fonctions extras, full, lightet naxsi, mais aucune mention est faite de core. Combien de cela a changé en 14.04?


secondary Si je comprends bien, la nginxprise en charge de modules tels qu'Apache n'est pas activée au moment de l'installation, de sorte que l'installation aurait un nginx-extrasimpact sur les performances?

muru
la source
1
Quelqu'un semble avoir créé une version plus récente du tableau de comparaison des fonctionnalités et l'avoir partagée sur Google Documents: docs.google.com/spreadsheet/…
Steven K
1
@StevenKath notez que CE document est uniquement basé sur Debian. Il ne concerne pas nginx-core et n'inclut pas les modifications instables qui suppriment l'arôme naxsi (car il n'est pas trivial de le maintenir).
Thomas Ward

Réponses:

99

Tandis que la réponse de Steven aborde les points clés et constitue un résumé très élémentaire de chaque saveur, je vais vous donner une description beaucoup plus détaillée des différences, car je travaille assez sur l'emballage, et les ensembles de modules très différents dans chacun est absolument essentiel pour une bonne réponse. Les descriptions de base ne rendent pas vraiment justice à la comparaison. (En outre, félicitations à Steven qui cite mon ancien blog (et me qualifiant même de «mainteneur». Je voulais porter le post de nginx-is-coming-to-main-principal sur mon blog plus récent, mais je n'ai pas eu l'occasion de le faire. .)

Notez également que les derniers packages pour le serveur Web NGINX sont disponibles dans les PPA NGINX, maintenus par moi-même et basés presque entièrement sur Debian. ( PPA stable (1.6.2 à ce poste); PPA sur la canalisation principale (1.7.7 à ce poste, dont 1.7.8 devrait atterrir le 4 décembre 2014))


Les différentes saveurs de nginx:

Les différentes versions sont toutes de la même version nginx, cependant les versions ont été choisies par les responsables de la maintenance du paquet Debian afin de fournir différents jeux de fonctionnalités (pour nginx-extras) ainsi que le strict minimum et le jeu de fonctions "complet" le plus efficace qui les serveurs Web ont tendance à être utilisés dans les sites Web. La raison exacte pour laquelle une caractéristique a été choisie par rapport à une autre ne m’est pas connue. Cependant, lors de discussions supplémentaires avec l’un des responsables de Debian sur IRC, une déclaration affirmant mon évaluation initiale a été faite, selon laquelle chaque variante était censée constituer un ensemble de fonctionnalités différent pour un cas d'utilisation différent - lightpour un ensemble léger de fonctionnalités répondant au minimum requis en matière d'hébergement de site, fullpour un ensemble plus complet de fonctionnalités sans inclure des extras beaucoup plus lourds, etextraspour à peu près tout ce qui est dans le paquet qui peut être inclus dans Ubuntu. naxsi, avant 15.04, était la variante Naxsi spécifiquement avec seulement le strict minimum de modules, car naxsi pouvait nécessiter beaucoup de ressources.

Soi-disant, selon l'un des responsables Debian de NGINX qui se coordonne régulièrement avec Upstream NGINX dans une conversation privée pour laquelle je ne peux pas publier de journaux, NGINX 2.x bénéficiera d'un support de module chargeable. Dans ce cas, light, fullet extrasdeviendra métapaquets qui font appel à des emballages individuels contenant chaque module. La date à laquelle cela devient le cas n'est pas connue, cependant, ni quels modules seront réellement capables de le faire.

Dans sa version actuelle, le nginxpaquet virtuel est conçu pour installer l'une des versions disponibles. Par défaut, comme nginx-coredans le principal et nous aimerions que les utilisateurs l'utilisent davantage, nginx-coreest le premier élément vu et essayé-tenté dans le paquet virtuel. (Cependant, le nginxpaquet peut s’appuyer sur l’une des saveurs de nginx, et est principalement là pour faciliter l’installation un peu plus facile pour ceux qui n’ont pas besoin de préférence de saveur spécifique)

Une ventilation détaillée avec les modules spécifiques disponibles dans chaque variante (basée sur le fichier Vividdebian/control et le fichier Trustydebian/control (les packages Naxsi ayant été supprimés dans Vivid)) est disponible ci-dessous. Notez que cela ne reflète pas les modifications les plus récentes dans Ubuntu, et vous devez vous reporter à la description de ces packages pour vous assurer que vous disposez des informations les plus récentes et les plus précises :

  • nginx-coreest la seule variante dans la section principale des référentiels Ubuntu, à compter de 14.04, et n'existe que dans les référentiels Ubuntu (et ne figure pas dans les PPA ni dans Debian, et ne sera jamais incluse dans Debian). En nginx-fullréalité, il est identique à la version , mais ne contient aucun module tiers. Le raisonnement derrière l'utilisationnginx-fullEn tant que base de cette variante, nous voulions fournir un ensemble relativement complet de modules de base dans les fichiers binaires construits, tout en excluant les modules tiers. En tant que tel, il ne contient aucun des modules tiers, car l'équipe de sécurité a examiné le code et a constaté que les modules tiers avaient des styles de codage très variés qui ne sont pas aussi bien pris en charge que nginx-tarball-included. modules (ceci est discuté plus en profondeur dans le bogue Principal Inclusion Request / Report , qui contient les points de discussion et des discussions plus approfondies sur ce qui pourrait être inclus dans Ubuntu Main pour nginx). Une liste complète des modules activés ici se trouve dans la description du paquet, que j'ai déjà choisie ici:

    MODULES HTTP STANDARD: Cœur, Accès, Autorisation de base, Index automatique, Navigateur, Jeu de caractères, GIF vide, FastCGI, Géo, Gzip, En-têtes, Index, Demandes de limite, Zone limite, Journal, Carte, Mémoire, Proxy, Référent, Réécriture, Réécriture, SCGI , Clients scindés, SSI, Amont, ID utilisateur, UWSGI.

    MODULES HTTP FACULTATIFS: Ajout, Débogage, GeoIP, Précompression Gzip, Sous HTTP, Filtre d'image, IPv6, IP réelle, Spdy, SSL, Statut de stub, Substitution, WebDAV, XSLT.

    MODULES DE COURRIER: Core Mail, IMAP, POP3, SMTP, SSL.

  • nginx-lightest la saveur la plus légère nginxdisponible. Il se trouve dans le référentiel Univers et vous devez l'activer pour l'utiliser. Il ne permet pas une grande quantité de modules disponibles dans -coreou -full. Il contient également des modules tiers. Les modules disponibles sont les suivants:

    MODULES HTTP STANDARD: Cœur, Accès, Autorisation de base, Index automatique, Jeu de caractères, GIF vide, FastCGI, Gzip, En-têtes, Index, Journal, Carte, Proxy, Réécriture, En amont.

    MODULES HTTP FACULTATIFS: Demande d'authentification, Débogage, Précompression Gzip, IPv6, IP réel, SSL, Statut de stub.

    MODULES DE TIERCE PARTIE: Echo.

  • nginx-fullest l’un des types de nginxpaquet les plus riches en fonctionnalités . Comme son lighthomologue, il se trouve dans le référentiel Univers. Il active la plupart des modules de base inclus qui sont standard et optionnels dans l'archive source de from-nginx, ainsi que plusieurs autres modules tiers conçus pour étendre les capacités du serveur Web nginx. Ses modules sont les suivants:

    MODULES HTTP STANDARD: Cœur, Accès, Autorisation de base, Index automatique, Navigateur, Jeu de caractères, GIF vide, FastCGI, Géo, Gzip, En-têtes, Index, Demandes de limite, Zone limite, Journal, Carte, Mémoire, Proxy, Référent, Réécriture, Réécriture, SCGI , Clients scindés, SSI, Amont, ID utilisateur, UWSGI.

    MODULES HTTP FACULTATIFS: Ajout, Demande d'authentification, Débogage, GeoIP, Précompression Gzip, Sous HTTP, Filtre d'image, IPv6, IP réelle, Spdy, SSL, Statut de remplacement, WebDAV, XSLT.

    MODULES DE COURRIER: Core Mail, IMAP, POP3, SMTP, SSL.

    MODULES DE TIERCE PARTIE: Auth PAM, Ext Ext DAV, Echo, Filtre de substitution HTTP, File d'attente amont amont.

  • nginx-extrasest la saveur la plus riche en fonctionnalités du nginxpackage. Et comme son fullet ses lightfrères, il est aussi dans le référentiel Univers. Il active tous les modules nginx-fullmais inclut également des modules supplémentaires (tels que le module Perl) et de nombreux autres modules tiers conçus pour étendre encore les capacités du serveur Web nginx. Sa liste complète de modules est ci-dessous:

    MODULES HTTP STANDARD: Cœur, Accès, Autorisation de base, Index automatique, Navigateur, Jeu de caractères, GIF vide, FastCGI, Géo, Gzip, En-têtes, Index, Demandes de limite, Zone limite, Journal, Carte, Mémoire, Proxy, Référent, Réécriture, Réécriture, SCGI , Clients scindés, SSI, Amont, ID utilisateur, UWSGI.

    MODULES HTTP FACULTATIFS: Ajout, Demande d’authentification, Débogage, Perl intégré, FLV, GeoIP, Précompression Gzip, Filtre d’image, IPv6, MP4, Index aléatoire, IP réelle, Lien sécurisé, Spdy, SSL, Statut de Stub, Substitution, WebDAV, XSLT.

    MODULES DE COURRIER: Core Mail, IMAP, POP3, SMTP, SSL.

    MODULES DE TIERCE PARTIE: Auth PAM, Chunkin, DAV Ext, Écho, Lua intégré, Index de fantaisie, HttpHeadersMore, Filtre de substitution HTTP, Push http, Kit de développement Nginx, Progression de la mise en ligne, File d'attente en amont.

  • nginx-naxsiest la variante de nginx pour laquelle le module Naxsi Web Application Firewall est disponible. C'est aussi dans Universe, cependant cette version n'est plus supportée par les responsables de Debian et sera complètement abandonnée d'Ubuntu à partir de la version 15.04. En plus du module Naxsi WAF, il comprend également un ensemble de modules beaucoup plus léger que nginx-full. La liste complète des modules est ci-dessous:

    MODULES HTTP STANDARD: Cœur, Accès, Autorisation de base, Index automatique, Navigateur, Jeu de caractères, Cœur, GIF vide, FastCGI, Géo, Gzip, En-têtes, Index, Demandes de limite, Zone limite, Journal, Carte, Mémoire, Proxy, Référent, Réécriture , Split Clients, SSI, Upstream, ID utilisateur.

    MODULES HTTP FACULTATIFS: Débogage, IPv6, IP réelle, SSL, État du stub.

    MODULES TIERS: Naxsi, Cache Purge, Foire Amont.


Utilisation des ressources parmi les saveurs

Bien que je ne sache pas que des tests de performance aient été exécutés sur les différentes versions de nginx, il est généralement logique de supposer que plus nginxvous utilisez la version de vos fonctionnalités, plus elle utiliserait de ressources.

Cependant, contrairement à Apache, qui peut ressembler à une pute de mémoire avec plus de modules activés, nginxne consomme toujours pas autant de mémoire par rapport à Apache lorsque les modules sont activés. (L'exception à cette déclaration est la naxsisaveur. Cette saveur consomme toujours beaucoup plus de ressources, car il s'agit d'un pare-feu d'applications Web ainsi que d'un serveur Web.)

J'ajouterai des points de repère à cette réponse si je les trouve, mais encore une fois, je ne suis au courant d'aucun point de repère existant pour les différentes saveurs les unes par rapport aux autres. Et même si les sites que je ne pas courir le trafic lourd, je ne l' ai pas remarqué une diminution réelle de la performance entre nginx-extras, nginx-fullou nginx-lightsur un site en PHP.

Thomas Ward
la source
Canonical en effet. Toute cette question a commencé quand j'ai vu dans ma cette ligne error.logaprès avoir installé nginx-extra: [info] 19936#0: Using 32768KiB of shared memory for push module in /etc/nginx/nginx.conf. C'est partagé et pas RSS, mais m'a quand même fait me poser des questions. D'où les doutes sur les performances, mais c'est secondaire.
muru
2
@muru le pushmodule est bien connu pour utiliser une bonne quantité de mémoire partagée. À ma connaissance (et je me trompe peut-être un peu là-dessus), la mémoire partagée est utilisée sur tous les sites du serveur Web sur lesquels le module Push peut être utilisé. Cependant, ce module est un module tiers. Par conséquent, tout problème réel qui le concerne devrait être adressé à leurs responsables :)
Thomas Ward
1
Non, pas de problèmes. Y a-t-il des versions plus récentes de votre PPA backports? Et comme ils sont vraisemblablement construits à partir de la même source, un correctif appliqué par l'équipe de sécurité nginx-coreserait également disponible pour -fullet -extra, n'est-ce pas?
muru
3
@muru Malheureusement, le packaging dans les versions des PPA est fait séparément d'Ubuntu. Actuellement, il est très délicat de transférer le paquet dans des versions plus anciennes - cela se fait finalement dans le PPA car je n'ai pas à me soucier de la fusion des modifications de Debian dans les modifications d'Ubuntu. Depuis l'inclusion principale, je n'ai pas enquêté sur le backporting, car de nombreux changements devraient être supprimés pour correspondre à ceux disponibles dans les versions antérieures. (et le paquet naxsi déposé rend le backporting 15.04 versions impossible maintenant).
Thomas Ward
2
@muru Et oui, tous les correctifs appliqués en tant que mises à jour de sécurité (ou en tant que mises à jour de version standard) dans 14.04 et les versions ultérieures s'appliqueront nginx-core, ainsi que les autres variantes de nginxdisponibles dans ce référentiel, car ils sont tous basés sur la même base de code. Ils ont juste différentes ./configurelignes pour activer ou désactiver différents modules.
Thomas Ward
14

Voici une évaluation de très haut niveau, basée principalement sur les descriptions dans les packages . (Je ne réussirai pas à fournir des exemples d'utilisation pour chacun, mais j'ai compris cela pour satisfaire ma curiosité afin que je puisse aussi le contribuer.)

Du plus petit au plus grand:

nginx-light: "version de base"

L'ensemble minimal de modules pour les fonctionnalités de base.

nginx-naxsi: "version avec naxsi"

L'ensemble minimal, plus la configuration renforcée "Nginx Anti Xss & Sql Injection" et ses plugins nécessaires.

nginx-core: "version de base"

Le déploiement nginx standard, moins les modules tiers.

Il s'agit du premier package nginx pris en charge par Canonical. Il se trouve dans le référentiel "principal" d'Ubuntu au lieu du référentiel "d'univers" pris en charge par la communauté. Voir l'annonce "nginx-core est maintenant dans Ubuntu Trusty 14.04 Main!" sur les archives du blog non officiel du responsable (ancien et maintenant disparu) ou sur la copie de l'ancien message sur le blog non officiel du responsable :

Aucune des versions de nginx déjà établies n’est incluse dans Ubuntu Main (nginx-light, nginx-full, nginx-extras et nginx-naxsi). L’équipe de sécurité d’Ubuntu a déclaré que le codage des modules tiers était extrêmement différent et qu’il ne pouvait donc pas être pris en charge.

À cette fin, nous avons créé un package appelé nginx-core qui a été inclus dans le référentiel principal. Ce paquet ne contient que les modules fournis avec l’archive nginx en stock. Nous n'incluons aucun module tiers dans ce package, mais uniquement les modules provenant de NGINX en amont.

nginx-full: "version standard"

Déploiement nginx standard, y compris les modules tiers fréquemment utilisés.

nginx-extras: "version étendue"

Le déploiement standard de nginx ainsi que plusieurs modules peu utilisés et de grande taille.

Steven K
la source
1
Une chose: si je comprends bien, les nginxmodules d’activation tels que Apache ne sont pas pris en charge, l’installation nginx-extraspourrait donc avoir un impact sur les performances.
Muru
1
naxsi est uniquement inclus dans -naxsi et -extras, pas -core ou -full. L'utilisation de -extras aura probablement un impact sur les performances, certainement sur une consommation de mémoire supérieure à celle d'un package plus léger.
Steven K
2
Ceci est obsolète. Je publierai une déclaration plus complète à ce sujet, car j’ai beaucoup d’influence sur le paquet nginx.
Thomas Ward
1
@ThomasW. Wow, n'es-tu pas le mec que j'ai cité ci-dessus dans le "blog du mainteneur"?
Steven K
1
@StevenKath Yeppers, et j'ai même abordé ce point dans ma réponse. Je devais déconnecter le blog précédent parce que Wordpress était une mauvaise structure, mais le problème est toujours valable. Je suis loin du "responsable officiel" dans Ubuntu, mais je suis probablement celui qui effectue le plus de maintenance sur le paquet et je suis probablement considéré comme le "responsable non officiel".
Thomas Ward