¿Cuál es la diferencia entre los paquetes core, full, extras y light para nginx?

72

nginxen Ubuntu es un paquete virtual proporcionado por uno de los cinco paquetes de los repositorios oficiales (al menos a partir del 14.04, por defecto nginx-core, creo):

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

¿Cuál es la diferencia entre estos paquetes y cuáles son los casos de uso recomendados para ellos?

Esta un poco viejo página Wiki de Debian tiene una comparación de características entre extras, full, lighty naxsi, aunque no se hace mención de core. ¿Cuánto ha cambiado en 14.04?


secundario Según tengo entendido, nginxno admite la activación en tiempo de ejecución de módulos como lo hace Apache, por lo que la instalación nginx-extrasafectaría el rendimiento.

muru
fuente
1
Alguien parece haber hecho una versión más reciente del cuadro de comparación de características y lo ha compartido en Google docs: docs.google.com/spreadsheet/…
Steven K
1
@StevenKath toma nota de que ESE documento se basa únicamente en Debian. No toca nginx-core, y no incluye los cambios inestables que eliminan el sabor naxsi (porque no es trivial de mantener).
Thomas Ward

Respuestas:

99

Si bien la respuesta de Steven toca los puntos clave y un resumen muy básico de lo que es cada sabor, le daré una descripción mucho más amplia de las diferencias, ya que trabajo bastante en el empaque y los conjuntos de módulos muy diferentes en cada uno es absolutamente crítico para una buena respuesta. Las descripciones básicas no le hacen mucha justicia a la comparación. (Además, felicitaciones a Steven citando mi blog anterior (e incluso refiriéndome a mí como 'mantenedor'. Tenía la intención de portar la publicación nginx-is-coming-to-main a mi blog más reciente, pero no he tenido la oportunidad .)

También tenga en cuenta que los paquetes más recientes para el servidor web NGINX están disponibles en los PPA NGINX, mantenidos por mí, basados ​​casi por completo en Debian. ( PPA estable (1.6.2 a partir de esta publicación); PPA principal (1.7.7 a partir de esta publicación, con 1.7.8 programado para aterrizar el 4 de diciembre de 2014))


Los diferentes sabores de nginx:

Los diferentes tipos son de la misma versión nginx, sin embargo, los encargados de los paquetes de Debian decidieron los tipos para proporcionar diferentes conjuntos de características (para nginx-extras), así como el conjunto mínimo y completo de funciones "completas" más efectivas que los servidores web tienden a haberse usado en sitios web. No conozco la razón exacta por la que se eligió una característica sobre otra, sin embargo, en una discusión complementaria con uno de los mantenedores de Debian en IRC, se hizo una declaración afirmando mi evaluación inicial, que cada variante tenía la intención de ser un conjunto diferente de características para un caso de uso diferente: lightpara un conjunto liviano de características que cumple con el mínimo de alojamiento de sitios, fullpara un conjunto más completo de características sin incluir extras mucho más pesados, yextraspara casi todo lo que está en el paquete que se puede incluir en Ubuntu. naxsi, antes de 15.04, era la variante de Naxsi específicamente con solo el mínimo de módulos, ya que naxsi podría ser bastante intensivo en recursos.

Supuestamente, según uno de los mantenedores de Debian de NGINX que coordina regularmente con Upstream NGINX en una conversación privada de la que actualmente no puedo publicar registros, NGINX 2.x tendrá soporte de módulo cargable. En cuyo caso, light, full, y extrasse convertirá en metapaquetes que piden a los envases individuales conteniendo cada módulo. Sin embargo, se desconoce la fecha en que esto se convierte en el caso, ni tampoco qué módulos serán capaces de hacerlo.

Tal como está actualmente, el nginxpaquete virtual está diseñado para instalar una de las versiones disponibles. Por defecto, como nginx-coreestá en main y nos encantaría que las personas lo usaran más, nginx-corees el primer elemento visto e intentado de instalación en el paquete virtual. (Sin embargo, el nginxpaquete puede confiar en cualquiera de los sabores de nginx, y está principalmente allí para facilitar un poco la instalación para aquellos que no necesitan ninguna preferencia de sabor específica)

Un desglose detallado con los módulos específicos disponibles en cada variante (basado en el archivo Vividdebian/control y el archivo Trustydebian/control (ya que los paquetes Naxsi se han eliminado en Vivid)) está disponible a continuación. Tenga en cuenta que esto no refleja los cambios más actualizados en Ubuntu, y debe consultar las descripciones de los paquetes para asegurarse de tener información actualizada y precisa :

  • nginx-corees el único sabor en la sección Principal de los repositorios de Ubuntu, a partir del 14.04, y existe solo en los repositorios de Ubuntu (y no está en los PPA o Debian, y nunca se incluirá en Debian). Es efectivamente idéntico al nginx-fullsabor, pero no contiene ningún módulo de terceros. El razonamiento detrás del usonginx-fullya que la base de esta variante era que queríamos proporcionar un conjunto relativamente completo de módulos principales en los binarios integrados, al tiempo que manteníamos los módulos de terceros al mismo tiempo. Como tal, no contiene ninguno de los módulos de terceros, ya que el Equipo de Seguridad hizo una revisión del código y descubrió que los módulos de terceros tienen estilos de codificación muy diferentes que no son tan compatibles como el nginx-tarball-included módulos (esto se discute más en profundidad en el error de Solicitud / Informe de inclusión principal , que contiene los puntos de discusión y más discusiones de revisión sobre qué podría incluirse en Ubuntu Main para nginx). Una lista completa de los módulos habilitados aquí está en la descripción del paquete, que he seleccionado aquí:

    MÓDULOS HTTP ESTÁNDAR: Core, Access, Auth Basic, Auto Index, Browser, Charset, Empty GIF, FastCGI, Geo, Gzip, Headers, Index, Limit Requests, Limit Zone, Log, Map, Memcached, Proxy, Referer, Rewrite, SCGI , Clientes divididos, SSI, Upstream, ID de usuario, UWSGI.

    MÓDULOS HTTP OPCIONALES: Adición, Depuración, GeoIP, Precompresión Gzip, Sub HTTP, Filtro de imagen, IPv6, Real IP, Spdy, SSL, Stub Status, Sustitución, WebDAV, XSLT.

    MÓDULOS DE CORREO: Mail Core, IMAP, POP3, SMTP, SSL.

  • nginx-lightEs el sabor más ligero nginxdisponible. Está en el repositorio de Universe y debes tener eso habilitado para usarlo. No habilita una gran cantidad de módulos disponibles en -coreo -full. También contiene módulos de terceros. Los módulos disponibles en él son los siguientes:

    MÓDULOS HTTP ESTÁNDAR: Core, Access, Auth Basic, Auto Index, Charset, Empty GIF, FastCGI, Gzip, Headers, Index, Log, Map, Proxy, Rewrite, Upstream.

    MÓDULOS HTTP OPCIONALES: Solicitud de autenticación, Depuración, Precompresión Gzip, IPv6, Real Ip, SSL, Estado del código auxiliar.

    MÓDULOS DE TERCEROS: Eco.

  • nginx-fulles uno de los sabores más ricos en funciones del nginxpaquete. Al igual que su lightcontraparte, está en el repositorio del Universo. Habilita la mayoría de los módulos centrales incluidos que son estándar y opcionales en el tarball fuente from-nginx, así como varios módulos de terceros más diseñados para ampliar las capacidades del servidor web nginx. Sus módulos son los siguientes:

    MÓDULOS HTTP ESTÁNDAR: Core, Access, Auth Basic, Auto Index, Browser, Charset, Empty GIF, FastCGI, Geo, Gzip, Headers, Index, Limit Requests, Limit Zone, Log, Map, Memcached, Proxy, Referer, Rewrite, SCGI , Clientes divididos, SSI, Upstream, ID de usuario, UWSGI.

    MÓDULOS HTTP OPCIONALES: Adición, Solicitud de autenticación, Depuración, GeoIP, Precompresión Gzip, Sub HTTP, Filtro de imagen, IPv6, Real IP, Spdy, SSL, Estado del stub, Sustitución, WebDAV, XSLT.

    MÓDULOS DE CORREO: Mail Core, IMAP, POP3, SMTP, SSL.

    MÓDULOS DE TERCEROS: Auth PAM, DAV Ext, Echo, Filtro de sustitución HTTP, Upstream Fair Queue.

  • nginx-extrases el sabor más rico en funciones del nginxpaquete. Y al igual que its fulland lightbrothers, también está en el repositorio del Universo. Activa todos los módulos nginx-fullpero también incluye módulos adicionales (como el módulo Perl) y muchos más módulos de terceros diseñados para ampliar aún más las capacidades del servidor web nginx. Su lista completa de módulos está a continuación:

    MÓDULOS HTTP ESTÁNDAR: Core, Access, Auth Basic, Auto Index, Browser, Charset, Empty GIF, FastCGI, Geo, Gzip, Headers, Index, Limit Requests, Limit Zone, Log, Map, Memcached, Proxy, Referer, Rewrite, SCGI , Clientes divididos, SSI, Upstream, ID de usuario, UWSGI.

    MÓDULOS HTTP OPCIONALES: Adición, Solicitud de autenticación, Depuración, Perl integrado, FLV, GeoIP, Precompresión Gzip, Filtro de imagen, IPv6, MP4, Índice aleatorio, IP real, Enlace seguro, Spdy, SSL, Estado del stub, Sustitución, WebDAV, XSLT.

    MÓDULOS DE CORREO: Mail Core, IMAP, POP3, SMTP, SSL.

    MÓDULOS DE TERCEROS: Auth PAM, Chunkin, DAV Ext, Echo, Embedded Lua, Fancy Index, HttpHeadersMore, HTTP Substitution Filter, http push, Nginx Development Kit, Upload Progress, Upstream Fair Queue.

  • nginx-naxsies la variante de nginx que tiene disponible el módulo Naxsi Web Application Firewall. También está en Universe, sin embargo, este sabor ya no es compatible con los mantenedores de Debian, y se eliminará por completo de Ubuntu con la versión 15.04. Además del módulo Naxsi WAF, también incluye un conjunto de módulos mucho más ligero que nginx-full. La lista completa de módulos está a continuación:

    MÓDULOS HTTP ESTÁNDAR: 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 , Clientes divididos, SSI, Upstream, ID de usuario.

    MÓDULOS HTTP OPCIONALES: Depuración, IPv6, Real IP, SSL, Estado del código auxiliar.

    MÓDULOS DE TERCEROS: Naxsi, Cache Purge, Upstream Fair.


Uso de recursos entre los sabores

Si bien no conozco ningún punto de referencia que se haya ejecutado en los distintos tipos nginx, normalmente es lógico suponer que cuanto más habilitada nginxesté la versión de usted, más recursos utilizará.

Sin embargo, a diferencia de Apache, que puede ser una especie de puta de memoria con más módulos habilitados, nginxtodavía no consume tanta memoria en comparación con Apache cuando los módulos están habilitados. (La excepción a esta declaración es el naxsisabor. Ese sabor siempre consume muchos más recursos, ya que es un firewall de aplicaciones web y un servidor web).

Agregaré puntos de referencia a esta respuesta si los encuentro, pero nuevamente, no conozco ningún punto de referencia existente para los diversos sabores entre sí. Y a pesar de que los sitios que ejecutan no tienen mucho tráfico, no he notado ninguna disminución del rendimiento real entre nginx-extras, nginx-fullo nginx-lighten un sitio PHP impulsada.

Thomas Ward
fuente
Canónico de hecho. Toda esta cuestión comenzó cuando vi esta línea en mi error.logdespués de instalar nginx-extra: [info] 19936#0: Using 32768KiB of shared memory for push module in /etc/nginx/nginx.conf. Es compartido y no RSS, pero aún así me hizo preguntarme. De ahí las dudas de rendimiento, pero eso es secundario.
muru
2
@muru, el pushmódulo es conocido por usar una buena cantidad de memoria compartida. Que yo sepa (y puedo estar un poco equivocado en esto), esa memoria compartida se usa en todos los sitios del servidor web donde se podría usar el módulo de inserción. Sin embargo, ese módulo es un módulo de terceros, por lo que cualquier problema real con él debe dirigirse a sus mantenedores :)
Thomas Ward
1
No, no hay problemas. ¿Alguna de las versiones más nuevas de tu PPA entra backports? Y dado que presumiblemente están construidos a partir de la misma fuente, un parche aplicado por el equipo de Seguridad nginx-coretambién estaría disponible -fully -extra, ¿no?
muru
3
@muru Desafortunadamente, el empaque de las versiones en los PPA se realiza por separado de Ubuntu. Actualmente, se vuelve muy complicado hacer una copia de seguridad del paquete para versiones anteriores; en última instancia, se hace en el PPA porque no tengo que meterme con la fusión de los cambios de Debian en los cambios de Ubuntu. Desde la inclusión principal, no he investigado el backporting, porque habría muchos cambios que tendrían que descartarse para que coincida con lo que está disponible en versiones anteriores. (y las caídas del paquete naxsi hacen que las versiones de backport 15.04 sean imposibles ahora).
Thomas Ward
2
@muru Y sí, todos los parches aplicados como actualizaciones de seguridad (o como actualizaciones de lanzamiento estándar) en 14.04 y posteriores se aplicarán nginx-core, así como a los otros sabores nginxdisponibles en ese repositorio, ya que todos se basan en la misma base de código. Solo tienen diferentes ./configurelíneas para habilitar o deshabilitar diferentes módulos.
Thomas Ward
14

Aquí hay una evaluación de muy alto nivel, basada principalmente en las descripciones de los paquetes . (Voy a estar a la altura de entregar ejemplos de casos de uso para cada uno, pero descubrí esto para satisfacer mi curiosidad, así que también podría contribuir).

De menor a mayor:

nginx-light: "versión básica"

El conjunto mínimo de módulos para la funcionalidad básica.

nginx-naxsi: "versión con naxsi"

El conjunto mínimo, más la configuración reforzada "Nginx Anti Xss & Sql Injection" y sus complementos necesarios.

nginx-core: "versión central"

La implementación estándar de nginx, menos los módulos de terceros.

Este es el primer paquete nginx compatible con Canonical. Está en el repositorio "principal" de Ubuntu en lugar del repositorio "universo" compatible con la comunidad. Vea el anuncio "¡nginx-core ahora está en Ubuntu Trusty 14.04 Main!" en un archivo del blog no oficial del mantenedor (antiguo y ahora difunto) o en la copia de la publicación anterior en el blog no oficial del mantenedor :

ninguno de los sabores ya establecidos de nginx se incluye en Ubuntu Main (nginx-light, nginx-full, nginx-extras y nginx-naxsi). El equipo de seguridad de Ubuntu ha dicho que los módulos de terceros son muy diferentes en la codificación y, por lo tanto, no pueden ser compatibles.

Con ese fin, creamos un paquete llamado nginx-core que se ha incluido en el repositorio principal. Este paquete contiene solo los módulos que se envían con el stock nginx tarball. No incluimos ningún módulo de terceros con este paquete, solo los módulos que provienen de NGINX upstream.

nginx-full: "versión estándar"

La implementación estándar de nginx, incluidos los módulos de terceros de uso frecuente.

nginx-extras: "versión extendida"

La implementación estándar de nginx más varios módulos poco utilizados y de gran tamaño.

Steven K
fuente
1
Una cosa: según tengo entendido, nginxno admite módulos habilitadores como lo hace Apache, por lo que la instalación nginx-extraspodría afectar el rendimiento.
muru
1
naxsi solo se incluye en -naxsi y -extras, no en -core o -full. El uso de -extras probablemente tendrá un impacto en el rendimiento, ciertamente más consumo de memoria que un paquete más ligero.
Steven K
2
Esto está fuera de fecha. Publicaré una declaración más completa sobre esto, ya que tengo mucha influencia con respecto al paquete nginx.
Thomas Ward
1
@ThomasW. Wow, ¿no eres el tipo que cité anteriormente del "blog del mantenedor"?
Steven K
1
@StevenKath Yeppers, e incluso mencioné ese punto en mi respuesta. Tuve que desconectar el blog anterior debido a que Wordpress es un mal marco, pero el punto sigue en pie. Estoy lejos del 'mantenedor oficial' en Ubuntu, pero probablemente haga la mayor parte del mantenimiento del paquete y probablemente sea considerado el 'mantenedor no oficial'.
Thomas Ward