В чем разница между основными, дополнительными и легкими пакетами для nginx?

72

nginxв Ubuntu есть виртуальный пакет, предоставленный одним из пяти пакетов из официальных репозиториев (по крайней мере, по состоянию на 14.04, по умолчанию nginx-core, я считаю):

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

В чем разница между этими пакетами и каковы рекомендуемые варианты их использования?

Это несколько старых Debian Wiki страница имеет сравнение функций между extras, full, lightи naxsi, не упомянув сделан из core. Насколько это изменилось в 14.04?


Вторичная Насколько я понимаю, nginxразве не поддерживается включение модулей во время выполнения модулей, как это делает Apache, поэтому будет ли nginx-extrasвлиять на производительность?

Мур
источник
1
Кто-то, кажется, сделал более свежую версию таблицы
Стивен К
1
@StevenKath обратите внимание, что этот документ основан исключительно на Debian. Он не затрагивает ядро ​​nginx и не включает в себя нестабильные изменения, которые удаляют вкус naxsi (поскольку поддерживать его нетривиально).
Томас Уорд

Ответы:

99

Хотя в ответе Стивена затрагиваются ключевые моменты и очень простое краткое изложение того, что представляет собой каждая разновидность, я дам вам гораздо более подробное описание различий, поскольку я немного работаю над упаковкой и очень разными наборами модулей в каждый абсолютно важен для хорошего ответа. Базовые описания не дают должного сравнения. (Кроме того, спасибо Стивену, который цитирует мой старый блог (и даже называет меня «сопровождающим»). Я хотел перенести пост nginx-is-come-to-main на мой новый блог, но у меня не было возможности .)

Также обратите внимание, что последние пакеты для веб-сервера NGINX доступны в PPA NGINX, поддерживаемых мной, которые основаны почти полностью на Debian. ( Стабильный PPA (1.6.2 на эту должность); Основной PPA (1.7.7 на эту должность, с 1.7.8 намечен на землю 4 декабря 2014 года))


Различных вкусов nginx:

Разные версии являются одной и той же версией nginx, однако разработчики пакетов Debian выбрали варианты, чтобы обеспечить различные наборы функций (для nginx-extras), а также минимальный и наиболее функциональный «полный» набор функций, веб-серверы, как правило, используются на веб-сайтах. Точная причина, по которой функция была выбрана вместо другой, мне не известна, однако при дополнительном обсуждении с одним из сопровождающих Debian по IRC было сделано заявление, подтверждающее мою первоначальную оценку, что каждый вариант предназначен для того, чтобы быть различным набором функций для другой вариант использования - lightдля облегченного набора функций, который соответствует минимальному хостингу сайта, fullдля более полного набора функций без включения каких-либо более тяжелых дополнений, иextrasпочти все, что есть в пакете, который может быть включен в Ubuntu. naxsiдо 15.04 был вариант Naxsi, в котором был только минимум модулей, поскольку naxsi мог быть довольно ресурсоемким.

Предположительно, по словам одного из сопровождающих Debian NGINX, который регулярно координирует с Upstream NGINX частную беседу, о которой я не могу сейчас публиковать журналы, NGINX 2.x будет иметь поддержку загружаемых модулей. В этом случае light, fullи extrasбудут метапакетами , которые требуют от индивидуальных упаковок , содержащих каждый модуль. Дата, к которой это относится, пока неизвестна, а также какие модули на самом деле способны это сделать.

В настоящее время nginxвиртуальный пакет предназначен для установки только одной из доступных версий. По умолчанию, как nginx-coreи в main, и мы хотели бы, чтобы люди использовали его чаще, nginx-coreэто первый элемент, который видели и пытались установить в виртуальном пакете. (Тем не менее, nginxпакет может опираться на любой из ароматов nginx, и в основном там, чтобы сделать установку немного проще для тех, кому не нужны какие-либо конкретные вкусовые предпочтения)

Детальная разбивка с конкретными модулями , доступными в каждом варианте (основана от Vivid debian/controlфайла и Trusty debian/controlфайл (как пакеты Naxsi были удалены в Vivid)) доступно ниже. Обратите внимание, что это не отражает самые последние изменения в Ubuntu, и вам следует обратиться к этим описаниям пакетов, чтобы убедиться, что вы обновили точную информацию :

  • nginx-coreявляется единственным вариантом в разделе Main репозиториев Ubuntu, начиная с 14.04, и существует только в репозиториях Ubuntu (и не входит в PPA или Debian, и никогда не будет включен в Debian). Он фактически идентичен nginx-fullвкусу, но не содержит сторонних модулей. Обоснование использованияnginx-fullв качестве основы для этого варианта было то, что мы хотели предоставить относительно полный набор основных модулей во встроенных двоичных файлах, в то же время не допуская сторонних модулей. Как таковой, он не содержит никаких сторонних модулей, так как команда безопасности провела обзор кода и обнаружила, что сторонние модули имеют широко варьирующиеся стили кодирования, которые не так хорошо поддерживаются, как nginx-tarball-включенный модули (это обсуждается более подробно в основной ошибке запроса включения / отчета , которая содержит пункты для обсуждения и дальнейшие обзорные обсуждения относительно того, что может быть включено в Ubuntu Main nginx). Полный список включенных модулей приведен в описании пакета, которое я здесь выбрал:

    СТАНДАРТНЫЕ МОДУЛИ HTTP: Core, Access, Auth Basic, Auto Index, Браузер, Charset, Пустой GIF, FastCGI, Geo, Gzip, Заголовки, Индекс, Запросы пределов, Предельная зона, Журнал, Карта, Memcached, Прокси, Referer, Rewrite, SCGI , Разделенные клиенты, SSI, Upstream, ID пользователя, UWSGI.

    ДОПОЛНИТЕЛЬНЫЕ МОДУЛИ HTTP: Сложение, Отладка, GeoIP, Прежнее сжатие Gzip, HTTP Sub, Фильтр изображений, IPv6, Реальный IP, Spdy, SSL, Статус заглушки, Подстановка, WebDAV, XSLT.

    Почтовые модули: Mail Core, IMAP, POP3, SMTP, SSL.

  • nginx-lightэто самый легкий аромат из nginxдоступных. Он находится в репозитории Universe, и вы должны иметь возможность его использовать. Это не позволяет большое количество модулей, доступных в -coreили -full. Он также содержит сторонние модули. Модули, доступные в этом, следующие:

    СТАНДАРТНЫЕ МОДУЛИ HTTP: Core, Access, Auth Basic, Auto Index, Charset, Пустой GIF, FastCGI, Gzip, Заголовки, Index, Log, Map, Proxy, Rewrite, Upstream.

    ДОПОЛНИТЕЛЬНЫЕ МОДУЛИ HTTP: запрос аутентификации, отладка, сжатие Gzip, IPv6, реальный Ip, SSL, статус заглушки.

    МОДУЛИ ТРЕТЬИХ ЛИЦ: Эхо.

  • nginx-fullявляется одним из наиболее многофункциональных ароматов nginxупаковки. Как и его lightаналог, он находится в хранилище Вселенной. Он включает большинство основных модулей, которые являются стандартными и дополнительными в исходном архиве from-nginx, а также несколько сторонних модулей, разработанных для расширения возможностей веб-сервера nginx. Это модули следующие:

    СТАНДАРТНЫЕ МОДУЛИ HTTP: Core, Access, Auth Basic, Auto Index, Браузер, Charset, Пустой GIF, FastCGI, Geo, Gzip, Заголовки, Индекс, Запросы пределов, Предельная зона, Журнал, Карта, Memcached, Прокси, Referer, Rewrite, SCGI , Разделенные клиенты, SSI, Upstream, ID пользователя, UWSGI.

    ДОПОЛНИТЕЛЬНЫЕ МОДУЛИ HTTP: сложение, запрос авторизации, отладка, GeoIP, предварительное сжатие Gzip, HTTP Sub, фильтр изображений, IPv6, реальный IP, Spdy, SSL, статус заглушки, подстановка, WebDAV, XSLT.

    Почтовые модули: Mail Core, IMAP, POP3, SMTP, SSL.

    МОДУЛИ ТРЕТЬИХ ЛИЦ: Auth PAM, DAV Ext, Echo, HTTP Substitution Filter, Upstream Fair Queue.

  • nginx-extrasэто самый многофункциональный вкус nginxупаковки. И, как и его fullи lightбратья, он тоже находится в хранилище Вселенной. Он включает все модули, nginx-fullно также включает в себя дополнительные модули (такие как модуль Perl) и многие другие сторонние модули, разработанные для еще большего расширения возможностей веб-сервера nginx. Полный список модулей приведен ниже:

    СТАНДАРТНЫЕ МОДУЛИ HTTP: Core, Access, Auth Basic, Auto Index, Браузер, Charset, Пустой GIF, FastCGI, Geo, Gzip, Заголовки, Индекс, Запросы пределов, Предельная зона, Журнал, Карта, Memcached, Прокси, Referer, Rewrite, SCGI , Разделенные клиенты, SSI, Upstream, ID пользователя, UWSGI.

    ДОПОЛНИТЕЛЬНЫЕ МОДУЛИ HTTP: сложение, запрос авторизации, отладка, встроенный Perl, FLV, GeoIP, предварительное сжатие Gzip, фильтр изображений, IPv6, MP4, случайный индекс, реальный IP, защищенная связь, Spdy, SSL, статус заглушки, подстановка, WebDAV, XSLT.

    Почтовые модули: Mail Core, IMAP, POP3, SMTP, SSL.

    МОДУЛИ ТРЕТЬИХ ЛИЦ: Auth PAM, Chunkin, DAV Ext, Echo, Embedded Lua, Fancy Index, HttpHeadersMore, фильтр подстановки HTTP, http push, комплект разработки Nginx, ход выполнения загрузки, восходящая ярмарка очереди.

  • nginx-naxsiэто вариант nginx, в котором доступен модуль Naxsi Web Application Firewall. Он также есть в Universe, однако этот вариант больше не поддерживается сопровождающими Debian и будет полностью удален из Ubuntu с выпуском 15.04. В дополнение к модулю Naxsi WAF, он также включает в себя гораздо более легкий набор модулей, чем nginx-full. Полный список модулей приведен ниже:

    СТАНДАРТНЫЕ МОДУЛИ HTTP: Core, Access, Auth Basic, Auto Index, Браузер, Charset, Core, Пустой GIF, FastCGI, Geo, Gzip, Заголовки, Индекс, Запросы пределов, Ограниченная зона, Журнал, Карта, Memcached, Прокси, Referer, Переписать , Разделенные клиенты, SSI, Upstream, ID пользователя.

    ДОПОЛНИТЕЛЬНЫЕ МОДУЛИ HTTP: Отладка, IPv6, Реальный IP, SSL, Статус заглушки.

    МОДУЛИ ТРЕТЬИХ ЛИЦ: Naxsi, Cache Purge, Upstream Fair.


Использование ресурсов среди вкусов

Несмотря на то, что мне неизвестны какие-либо тесты, которые выполнялись для различных разновидностей nginx, как правило, логично предположить, что чем больше nginxиспользуемой вами версии с поддержкой функций , тем больше ресурсов она будет использовать.

Однако, в отличие от Apache, который может быть чем-то вроде шлюхи памяти с включенным большим количеством модулей, он по- nginxпрежнему не потребляет столько памяти, сколько Apache, когда модули включены. (Исключением из этого утверждения является naxsiвариант. Этот вариант всегда потребляет гораздо больше ресурсов, так как это брандмауэр веб-приложений, а также веб-сервер.)

Я добавлю тесты к этому ответу, если найду их, но, опять же, я не знаю ни о каких существующих тестах для различных вариантов по отношению друг к другу. И даже несмотря на сайты я бег не большой трафика, я не заметил какое - либо реальное снижение производительности между nginx-extras, nginx-fullили nginx-lightна PHP инициативы сайта.

Томас Уорд
источник
Канонический действительно. Весь этот вопрос начался , когда я увидел эту линию по моему error.logпосле установки nginx-extra: [info] 19936#0: Using 32768KiB of shared memory for push module in /etc/nginx/nginx.conf. Это общий доступ, а не RSS, но все же заставил меня задуматься. Следовательно, производительность сомневается, но это вторично.
Муру
2
@muru pushмодуль хорошо известен тем, что он использует много общей памяти. Насколько мне известно (и я могу немного ошибаться в этом), эта общая память используется во всех узлах веб-сервера, где может использоваться модуль push. Тем не менее, этот модуль является сторонним модулем, поэтому любые реальные проблемы с ним должны быть направлены на их сопровождающих :)
Томас Уорд
1
Нет, никаких проблем Входит ли какая-нибудь из более новых версий из вашего PPA backports? И поскольку они предположительно созданы из одного и того же источника, патч, примененный командой безопасности nginx-core, также будет доступен -fullи -extra, верно?
Муру
3
@muru К сожалению, упаковка в версиях в PPA выполняется отдельно от Ubuntu. В настоящее время очень сложно перенести пакет в более старые выпуски - в конечном итоге это делается в PPA, потому что мне не нужно связываться с объединением изменений Debian в изменения Ubuntu. Начиная с Основного Включения, я не исследовал бэкпортинг, потому что было бы много изменений, которые нужно было бы отбросить, чтобы соответствовать тем, что доступно в более старых версиях. (а отбрасывание пакета naxsi делает невозможным обратный перенос версий 15.04).
Томас Уорд
2
@muru И да, любые исправления, применяемые в качестве обновлений безопасности (или в качестве стандартных выпусков обновлений) в 14.04 и более поздних версиях, будут применяться nginx-coreкак к другим разновидностям, nginxдоступным в этом хранилище, так как все они опираются на одну и ту же базу кода. У них просто есть разные ./configureстроки для включения или отключения разных модулей.
Томас Уорд
14

Вот очень высокоуровневая оценка, основанная в основном на описаниях в пакетах . (Я не смогу привести примеры вариантов использования для каждого, но я решил, что это достаточно, чтобы удовлетворить свое любопытство, поэтому я мог бы также внести его.)

От самого маленького до самого большого:

nginx-light: «базовая версия»

Минимальный набор модулей для базовой функциональности.

nginx-naxsi: "версия с naxsi"

Минимальный набор, плюс усиленная конфигурация «Nginx Anti Xss & Sql Injection» и необходимые плагины.

nginx-core: «базовая версия»

Стандартное развертывание nginx, за исключением сторонних модулей.

Это первый поддерживаемый Canonical пакет nginx. Он находится в "основном" хранилище Ubuntu вместо поддерживаемого сообществом хранилища "юниверс". Смотрите объявление "nginx-core теперь в Ubuntu Trusty 14.04 Main!" на архиве неофициальных сопровождающего (старшего и ныне несуществующего) блог или на копии старого поста на неофициальном блог сопровождающего :

ни одна из уже установленных разновидностей nginx не включена в Ubuntu Main (nginx-light, nginx-full, nginx-extras и nginx-naxsi). Команда безопасности Ubuntu заявляет, что сторонние модули сильно отличаются по кодированию и поэтому не могут поддерживаться.

Для этого мы создали пакет под названием nginx-core, который был включен в основной репозиторий. Этот пакет содержит только модули, которые поставляются с архивом nginx. Мы не включаем в этот пакет какие-либо сторонние модули, а только модули, входящие в состав NGINX.

nginx-full: «стандартная версия»

Стандартное развертывание nginx, включая часто используемые сторонние модули.

nginx-extras: «расширенная версия»

Стандартное развертывание nginx плюс несколько редко используемых и больших модулей.

Стивен К
источник
1
Одна вещь: насколько я понимаю, nginxне поддерживает такие модули, как Apache, поэтому установка nginx-extrasможет повлиять на производительность?
Муру
1
naxsi включается только в -naxsi и -extras, но не -core или -full. Использование -extras, вероятно, повлияет на производительность, и, конечно, потребляет больше памяти, чем более легкий пакет.
Стивен К
2
Это устарело. Я опубликую более полное заявление по этому вопросу, так как я имею большое влияние на пакет nginx.
Томас Уорд
1
@ThomasW. Вау, разве ты не чувак, которого я цитировал выше из "блога сопровождающего"?
Стивен К
1
@StevenKath Yeppers, и я даже затронул этот момент в своем ответе. Мне пришлось отключить предыдущий блог из-за того, что Wordpress был злой частью фреймворка, но точка зрения остается неизменной. Я далёк от «официального сопровождающего» в Ubuntu, но я, вероятно, больше всего поддерживаю пакет и, вероятно, считается «неофициальным сопровождающим».
Томас Уорд