Qual é a diferença entre os pacotes core, full, extras e light do nginx?

72

nginxno Ubuntu é um pacote virtual fornecido por um dos cinco pacotes dos repositórios oficiais (pelo menos a partir de 14.04, por padrão nginx-core, acredito):

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

Qual é a diferença entre esses pacotes e quais são os casos de uso recomendados para eles?

Este pouco velho página Debian Wiki tem uma comparação de recursos entre extras, full, lighte naxsi, mas nenhuma menção é feita de core. Quanto disso mudou em 14.04?


secundário Pelo que entendi, nginxnão suporta a habilitação de tempo de execução de módulos como o Apache, por isso a instalação afetaria o nginx-extrasdesempenho?

muru
fonte
11
Alguém parece ter feito uma versão mais recente do gráfico de comparação de recursos e o compartilhou nos documentos do Google: docs.google.com/spreadsheet/…
Steven K
11
O @StevenKath anote que ESTE documento é baseado unicamente no Debian. Ele não toca no nginx-core e não inclui as alterações instáveis ​​que removem o sabor naxsi (porque não é fácil mantê-lo).
Thomas Ward

Respostas:

99

Enquanto a resposta de Steven aborda os pontos-chave e um resumo muito básico de cada sabor, darei uma descrição muito maior das diferenças, enquanto trabalho bastante na embalagem e nos conjuntos de módulos muito diferentes em cada um é absolutamente crítico para uma boa resposta. As descrições básicas não fazem muita justiça à comparação. (Além disso, parabéns a Steven por citar meu blog mais antigo (e até mesmo por me referir como um 'mantenedor'. Eu pretendia portar a publicação nginx-está-vindo-para-principal) em meu blog mais recente, mas não tive a oportunidade .)

Observe também que os pacotes mais recentes para o servidor web NGINX estão disponíveis nos PPAs NGINX, mantidos por mim, baseados quase inteiramente fora do Debian. ( PPA estável (1.6.2 a partir deste post); PPA principal (1.7.7 a partir deste post, com 1.7.8 programado para 4 de dezembro de 2014))


Os diferentes sabores de nginx:

Os diferentes sabores são todos da mesma versão nginx, no entanto, os sabores foram decididos pelos mantenedores de pacotes Debian para fornecer diferentes conjuntos de recursos (para nginx-extras), bem como o mínimo necessário e o conjunto completo de funções com mais recursos que servidores da web tendem a ter usado em sites. A razão exata pela qual um recurso foi escolhido em detrimento de outro não é conhecida por mim, no entanto, em discussões suplementares com um dos mantenedores do Debian no IRC, foi feita uma declaração afirmando minha avaliação inicial, de que cada variante se destinava a ser um conjunto diferente de recursos para um caso de uso diferente - lightpara um conjunto leve de recursos que atenda ao mínimo de hospedagem de sites, fullpara um conjunto mais completo de recursos sem incluir extras muito mais pesados, eextraspara praticamente tudo o que está no pacote que pode ser incluído no Ubuntu. naxsi, antes de 15.04, era a variante do Naxsi especificamente com apenas o mínimo de módulos, pois o naxsi podia consumir bastante recursos.

Supostamente, de acordo com um dos mantenedores Debian do NGINX que está coordenando regularmente com o Upstream NGINX em uma conversa privada da qual atualmente não posso postar logs, o NGINX 2.x terá suporte a módulo carregável. Nesse caso, light, full, e extrasse tornará metapacotes que instam os pacotes individuais contendo cada módulo. A data em que isso acontece é desconhecida, no entanto, nem os módulos serão realmente capazes de fazer isso.

Atualmente, o nginxpacote virtual foi projetado para instalar apenas uma das versões disponíveis. Por padrão, como nginx-coreé o principal e gostaríamos que os indivíduos o usassem mais, nginx-coreé o primeiro item visto e tentado instalar no pacote virtual. (No entanto, o nginxpacote pode contar com qualquer um dos sabores de nginx, e está principalmente lá para facilitar a instalação um pouco para aqueles que não precisam de nenhuma preferência de sabor específica)

Um detalhamento detalhado dos módulos específicos disponíveis em cada variante (com base no arquivo Vividdebian/control e no arquivo Trustydebian/control (como os pacotes Naxsi foram removidos no Vivid)) está disponível abaixo. Observe que isso não reflete as alterações mais atualizadas no Ubuntu, e você deve consultar as descrições dos pacotes para verificar se possui informações atualizadas e precisas :

  • nginx-coreé o único sabor na seção Principal dos repositórios do Ubuntu, a partir de 14.04, e existe apenas nos repositórios do Ubuntu (e não está nos PPAs ou no Debian, e nunca será incluído no Debian). É efetivamente idêntico ao nginx-fullsabor, mas não contém nenhum módulo de terceiros. O raciocínio por trás do usonginx-fullcomo base para essa variante, queremos fornecer um conjunto relativamente completo de módulos principais nos binários construídos, mantendo os módulos de terceiros ao mesmo tempo. Como tal, ele não contém nenhum dos módulos de terceiros, pois a Equipe de Segurança fez uma revisão do código e descobriu que os módulos de terceiros têm estilos de codificação muito variados, que não são tão bem suportados quanto os incluídos no nginx-tarball módulos (isso é discutido mais detalhadamente no bug de solicitação / relatório de inclusão principal , que contém os pontos de discussão e discussões de revisão adicionais sobre o que pode ser incluído no Ubuntu Main para nginx). Uma lista completa dos módulos ativados aqui está na descrição do pacote, que eu indiquei aqui:

    MÓDULOS HTTP PADRÃO: Núcleo, Acesso, Autenticação básica, Índice automático, Navegador, Conjunto de caracteres, GIF vazio, FastCGI, Geo, Gzip, Cabeçalhos, Índice, Solicitações de limite, Zona de limite, Log, Mapa, Memcached, Proxy, Referer, Reescrever, SCGI , Split Clients, SSI, Upstream, ID do usuário, UWSGI.

    MÓDULOS HTTP OPCIONAIS: Adição, Depuração, GeoIP, Pré-compressão Gzip, Sub HTTP, Filtro de Imagem, IPv6, IP Real, Spdy, SSL, Status de Stub, Substituição, WebDAV, XSLT.

    MÓDULOS DE CORREIO: Núcleo de Correio, IMAP, POP3, SMTP, SSL.

  • nginx-lighté o sabor mais leve nginxdisponível. Está no repositório Universe e você deve habilitar o uso para usá-lo. Não permite uma grande quantidade de módulos disponíveis em -coreou -full. Ele também contém módulos de terceiros. Os módulos disponíveis são os seguintes:

    MÓDULOS HTTP PADRÃO: Núcleo, Acesso, Autenticação básica, Índice automático, Conjunto de caracteres, GIF vazio, FastCGI, Gzip, Cabeçalhos, Índice, Log, Mapa, Proxy, Reescrever, Upstream.

    MÓDULOS HTTP OPCIONAIS: solicitação de autenticação, depuração, pré-compactação Gzip, IPv6, IP real, SSL, status do stub.

    MÓDULOS DE TERCEIROS: Eco.

  • nginx-fullé um dos sabores mais ricos em recursos do nginxpacote. Como sua lightcontraparte, está no repositório Universe. Ele permite a maioria dos módulos principais incluídos, que são padrão e opcionais no tarball de origem da-nginx, além de vários outros módulos de terceiros projetados para estender os recursos do servidor da web nginx. Seus módulos são os seguintes:

    MÓDULOS HTTP PADRÃO: Núcleo, Acesso, Autenticação básica, Índice automático, Navegador, Conjunto de caracteres, GIF vazio, FastCGI, Geo, Gzip, Cabeçalhos, Índice, Solicitações de limite, Zona de limite, Log, Mapa, Memcached, Proxy, Referer, Reescrever, SCGI , Split Clients, SSI, Upstream, ID do usuário, UWSGI.

    MÓDULOS HTTP OPCIONAIS: Adição, solicitação de autenticação, depuração, GeoIP, pré-compactação Gzip, sub HTTP, filtro de imagem, IPv6, IP real, Spdy, SSL, status de stub, substituição, WebDAV, XSLT.

    MÓDULOS DE CORREIO: Núcleo de Correio, IMAP, POP3, SMTP, SSL.

    MÓDULOS DE TERCEIROS: Auth PAM, DAV Ext, Echo, Filtro de Substituição HTTP, Fila Fair Upstream.

  • nginx-extrasé o sabor mais rico em recursos do nginxpacote. E como seus fulle lightirmãos, ele também está no repositório Universe. Ele habilita todos os módulos, nginx-fullmas também inclui módulos adicionais (como o módulo Perl) e muitos outros módulos de terceiros projetados para estender ainda mais os recursos do servidor da web nginx. Sua lista completa de módulos está abaixo:

    MÓDULOS HTTP PADRÃO: Núcleo, Acesso, Autenticação básica, Índice automático, Navegador, Conjunto de caracteres, GIF vazio, FastCGI, Geo, Gzip, Cabeçalhos, Índice, Solicitações de limite, Zona de limite, Log, Mapa, Memcached, Proxy, Referer, Reescrever, SCGI , Split Clients, SSI, Upstream, ID do usuário, UWSGI.

    MÓDULOS HTTP OPCIONAIS: Adição, Solicitação de Autenticação, Depuração, Perl Incorporado, FLV, GeoIP, Pré-compressão Gzip, Filtro de Imagem, IPv6, MP4, Índice Aleatório, IP Real, IP Real, Link Seguro, Spdy, SSL, Status de Stub, Substituição, WebDAV, XSLT.

    MÓDULOS DE CORREIO: Núcleo de Correio, IMAP, POP3, SMTP, SSL.

    MÓDULOS DE TERCEIROS: Auth PAM, Chunkin, DAV Ext, Echo, Lua Incorporada, Índice de Fantasia, HttpHeadersMore, Filtro de Substituição de HTTP, http push, Nginx Development Kit, Upload Progress, Upstream Fair Queue Fair.

  • nginx-naxsié a variante do nginx que possui o módulo Naxsi Web Application Firewall disponível. Também está no Universe, no entanto, esse sabor não é mais suportado pelos mantenedores do Debian e será completamente removido do Ubuntu com a versão 15.04. Além do módulo Naxsi WAF, ele também inclui um conjunto de módulos muito mais leve que o nginx-full. A lista completa de módulos está abaixo:

    MÓDULOS HTTP PADRÃO: Núcleo, Acesso, Autenticação básica, Índice automático, Navegador, Conjunto de caracteres, Núcleo, GIF vazio, FastCGI, Geo, Gzip, Cabeçalhos, Índice, Solicitações de limite, Zona limite, Log, Mapa, Memcached, Proxy, Referenciador, Reescrever , Split Clients, SSI, Upstream, ID do usuário.

    MÓDULOS HTTP OPCIONAIS: Depuração, IPv6, IP Real, SSL, Status do Stub.

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


Uso de recursos entre os sabores

Embora eu não esteja ciente de quaisquer benchmarks executados nos vários tipos de nginx, é tipicamente lógico supor que quanto mais habilitada por recurso nginxvocê usa, mais recursos ele usaria.

No entanto, ao contrário do Apache, que pode ser uma espécie de prostituta de memória com mais módulos ativados, nginxainda não consome tanta memória em comparação com o Apache quando os módulos estão ativados. (A exceção a essa declaração é o naxsisabor. Esse sabor sempre consome muito mais recursos, pois é um firewall de aplicativos da Web e um servidor da web.)

Acrescentarei referências a esta resposta se as encontrar, mas, novamente, não conheço nenhuma referência existente para os vários sabores entre si. E mesmo que os sites que eu correr não tem tráfego pesado, eu não ter notado qualquer diminuição do desempenho real entre nginx-extras, nginx-fullou nginx-lightem um site orientado a PHP.

Thomas Ward
fonte
Canônico de fato. Toda esta questão começou quando eu vi essa linha no meu error.logdepois que eu instalado nginx-extra: [info] 19936#0: Using 32768KiB of shared memory for push module in /etc/nginx/nginx.conf. É compartilhado e não RSS, mas ainda me fez pensar. Portanto, o desempenho duvida, mas isso é secundário.
4114 muru
2
@muru O pushmódulo é bem conhecido por usar um bom bocado de memória compartilhada. Que eu saiba (e posso estar um pouco errado nisso), essa memória compartilhada é usada em todos os sites no servidor web em que o módulo push pode ser usado. No entanto, esse módulo é um módulo de terceiros, portanto, quaisquer problemas reais com ele devem ser direcionados aos mantenedores :)
Thomas Ward
11
Nah, sem problemas. Alguma das versões mais recentes do seu PPA entra backports? E, como presume-se que eles sejam criados a partir da mesma fonte, um patch aplicado pela equipe de Segurança nginx-coretambém estaria disponível -fulle -extra, certo?
4114 muru
3
Infelizmente, o empacotamento nas versões nos PPAs é feito separadamente do Ubuntu. Atualmente, fica muito complicado fazer o backport do pacote para versões mais antigas - isso é feito no PPA, porque eu não tenho que mexer com a fusão das mudanças do Debian nas mudanças do Ubuntu. Desde a Inclusão principal, eu não investiguei o backporting, porque haveria muitas mudanças que precisariam ser descartadas para corresponder ao que está disponível em versões mais antigas. (e o pacote naxsi descarta as versões do backporting 15.04 agora impossíveis).
Thomas Ward
2
@muru E sim, todos os patches aplicados como atualizações de segurança (ou como atualizações de versão padrão) no 14.04 e posterior serão aplicados nginx-corea outros tipos de nginxdisponibilidade disponíveis nesse repositório, pois todos eles se baseiam na mesma base de código. Eles apenas têm ./configurelinhas diferentes para ativar ou desativar módulos diferentes.
Thomas Ward
14

Aqui está uma avaliação de alto nível, baseada principalmente nas descrições dos pacotes . (Não vou fornecer exemplos de casos de uso para cada um, mas achei isso muito satisfatório para minha curiosidade, para que eu também possa contribuir.)

Do menor para o maior:

nginx-light: "versão básica"

O conjunto mínimo de módulos para funcionalidade básica.

nginx-naxsi: "versão com naxsi"

O conjunto mínimo, mais a configuração reforçada "Nginx Anti Xss & Sql Injection" e seus plugins necessários.

nginx-core: "versão principal"

A implantação padrão do nginx, menos os módulos de terceiros.

Este é o primeiro pacote nginx suportado pela Canonical. Está no repositório "principal" do Ubuntu, em vez do repositório "universo", suportado pela comunidade. Veja o anúncio "nginx-core está agora no Ubuntu Trusty 14.04 Main!" em um arquivo do blog não oficial do mantenedor (antigo e agora extinto) ou na cópia da postagem antiga no blog não oficial do mantenedor :

nenhum dos sabores já estabelecidos do nginx está incluído no Ubuntu Main (nginx-light, nginx-full, nginx-extras e nginx-naxsi). A Equipe de Segurança do Ubuntu disse que os módulos de terceiros são muito diferentes na codificação e, portanto, não podem ser suportados.

Para esse fim, criamos um pacote chamado nginx-core, que foi incluído no repositório principal. Este pacote contém apenas os módulos que acompanham o pacote nginx tarball. Não incluímos nenhum módulo de terceiros neste pacote, apenas os módulos que vêm do NGINX upstream.

nginx-full: "versão padrão"

A implantação padrão do nginx, incluindo módulos de terceiros usados ​​com freqüência.

nginx-extras: "versão estendida"

A implantação padrão do nginx, além de vários módulos largish e pouco usados.

Steven K
fonte
11
Uma coisa: pelo que entendi, nginxnão suporta a ativação de módulos como o Apache, por isso a instalação nginx-extraspoderia afetar o desempenho?
Muru
11
o naxsi é incluído apenas em -naxsi e -extras, não -core ou -full. O uso de -extras provavelmente terá impactos no desempenho, certamente mais consumo de memória do que um pacote mais leve.
Steven K
2
Isso está desatualizado. Vou postar uma declaração mais completa sobre isso, pois tenho muita influência em relação ao pacote nginx.
Thomas Ward
11
@ThomasW. Uau, você não é o cara que citei acima no "blog do mantenedor"?
Steven K
11
@StevenKath Yeppers, e eu até toquei nesse ponto na minha resposta. Eu tive que colocar o blog anterior offline porque o Wordpress é uma estrutura maligna, mas o ponto ainda permanece. Estou longe do 'mantenedor oficial' no Ubuntu, mas provavelmente faço mais manutenção no pacote e provavelmente sou considerado o 'mantenedor não oficial'.
Thomas Ward