[Перевод] Анонс NGINX 1.10 и 1.11

Disclaimer: оригинальная статья, перевод которой здесь представлен, служит цели объявить о выходе новых старших версий продукта, рассказать в целом о политике версионирования и успехах за прошедший год. Если вас интересуют сухие технические подробности, то рекомендую смотреть полный лог изменений, либо его выжимку с кратким пояснением в конце статьи.


Мы рады представить NGINX 1.10 и 1.11. Эти номера версий обозначают стабильную (stable) и основную (mainline) ветки бесплатных открытых выпусков, над которыми мы сфокусируем наши усилия на протяжении следующих 12 месяцев.

NGINX версии 1.10.0 уже вышел, а будущий выпуск основной ветки будет под номером 1.11.0.

Cистема версионирования NGINX


Компания NGINX, Inc. поддерживает две ветки всем известного веб-сервера и акселератора NGINX:

  • Нечетная версия (1.11) является нашей основной веткой. Она активно разрабатывается, новые минорные релизы (1.11.1, 1.11.2 и т.д.) выходят примерно каждые 4–6 недель, регулярно предоставляя новые возможности;
  • Четная версия (1.10) является нашей стабильной веткой. Она предназначается для пользователей, которые не хотят находиться на переднем крае разработки NGINX, и обновляется только ради исправления критических проблем. Например, за последний год всего одно минорное обновление выпущено в рамках стабильной ветки 1.8.


Ежегодно мы объявляем устаревшей текущую стабильную ветку и ответвляем от основной ветки новую стабильную, которая будет поддерживаться последующие 12 месяцев:
92e93c352cd67ba0f17ed1d202d268f4.pngВерсия 1.8 больше не поддерживается. Версия 1.10 выделена из версии 1.9, как новая стабильная ветка, а 1.9 перенумерована в 1.11.

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

Самое лучшее от двух подходов вобрал в себя NGINX Plus, который базируется на основной ветке, но имеет квартальный цикл выпуска и официальную поддержку от команды NGINX.

Оглядываясь на проделанную работу в NGINX 1.9


Последний год был одним из самых насыщенных в истории NGINX. Огромное количество новой функциональности было включено в основную ветку. HTTP/2, TCP и UDP проксирование с балансировкой, динамические модули — всё это добавлено в бесплатную версию веб-сервера за последние 12 месяцев.

Множество других возможностей, исправлений и улучшений было также реализовано, что делает серию 1.9 самой крупной по объему разработки за последние годы. Полный список таких изменений можно найти в примечании ко всем выпускам ветки. То небольшое количество изменений, которое было портировано в стабильную ветку 1.8, является показателем высоких стандартов качества и надежности, которых придерживается наша команда разработчиков.

Кроме того, в 2015 году мы преодолели значимый рубеж популярности NGINX. Хотя у нас нет намерений конкурировать и отбирать долю рынка у других веб-сервров, приятно видеть стабильный рост использования NGINX. И на данный момент более 50% из 10 000 самых нагруженных сайтов в мире полагаются на NGINX для доставки приложений и контента своим пользователям.

Заглядывая в светлое будущее NGINX 1.11


Будущая серия NGINX 1.11 также обещает много нового и интересного. Продолжается работа над nginScript, реализацией JavaScript, специально заточенной под уникальные требования ядра NGINX. Мы собираемся продолжать развивать сообщество разработчиков NGINX, во многом благодаря возможности создания динамических модулей и недавно опубликованной первой части документации для разработчиков. Удовлетворение нужд современных распределенных приложений, основанных на архитектуре микросервисов, также занимает ведущую роль в наших планах, большая часть которых будет анонсирована на нашей ежегодной конференции «nginx.conf» в сентябре 2016.

Что касается NGINX Plus


NGINX Plus является версией NGINX с официальной технической поддержкой и расширенным функционалом, который позволяет ему отлично справляться с ролью основного балансировщика и контроллера доставки контента (ADC). NGINX Plus базируется на основной ветке и имеет трехмесячный цикл выпуска. Новая функциональность из основной ветки вливается в NGINX Plus и выпускается после прохождения полного интеграционного тестирования и боевой проверки в рамках бесплатной свободной версии NGINX:

2c1f17d93d881405c71fa71faa45202b.pngNGINX Plus базируется на основной ветке NGINX с добавлением дополнительных функциональных возможностей.

Внутренний номер версии NGINX Plus, соответствующий тому выпуску из основной ветки, на котором он базируется, можно найти в примечаниях к релизам. Чтобы увидеть номер установленной версии можно выполнить команду nginx -v:

$ nginx -v
nginx version: nginx/1.9.13 (nginx-plus-r9)


NGINX Plus дает вам идеальный баланс новейших, но уже проверенных в бою возможностей бесплатной версии NGINX, улучшенной балансировки и различной дополнительной функциональности, интересной коммерческим пользователям, а также полную 24×7 поддержку и обновления от нашей команды инженеров и экспертов. Вы можете бесплатно попробовать в течение 30 дней пробную версию NGINX Plus, для чего достаточно заполнить форму или связаться с нами.

Cписок основных нововведений в NGINX версии 1.10 по сравнению с 1.8:


  • Поддержка динамических модулей. В частности это дает возможность разложить модули по разным пакетам со своими зависимостями и, при необходимости, доустанавливать, подключать и обновлять их отдельно. Так в наших официальных репозиториях мы уже предоставляем набор отдельных пакетов с модулями, в том числе модуль njs, который позволяет использовать JavaScript в конфигах.
  • Новый модуль stream для проксирования и балансировки любого TCP и UDP трафика. Например, теперь вы можете использовать NGINX для балансировки DNS или MySQL серверов.
  • Новый модуль slice, который позволяет повысить эффективность кэширования больших файлов за счет разделения их на фрагменты, которые могут быть кэшированы независимо.
  • Модуль SPDY был заменен на модуль HTTP/2. Последний теперь также поддерживает небуферизированное чтение тела запроса.
  • Существенно улучшен модуль sub_filter, позволяющий производить замены в теле ответа сервера. Увеличина производительность, появилась возможность использовать переменные в качестве искомой строки и строки замены, а также таких строк теперь можно задавать множество.
  • Опция reuseport у директивы listen, позволяющая заметно увеличить производительность на многопроцессорных системах в случаях высокой интенсивности поступления новых соединений. Подробная статья об этом.
  • Поддержка TCP во встроенном резолвере.
  • Теперь учитывается идемпотентность методов запроса при выборе другого сервера в случае ошибок проксирования. Поведение регулирует новой опцией non_idempotent в директивах proxy_next_ustream, fastcgi_next_upstream, uwsgi_next_upstream и scgi_next_upstream
  • Пулы потоков теперь можно использовать для записи ответа от бекенда. Управляется директивой aio_write. Подробная статья о том, что такое пулы потоков, для чего они нужны и как их использовать.
  • Улучшена работа кэш-менеджера. Он теперь отслеживает не только занимаемое место на диске, но и объем метаданных в разделяемой памяти.
  • Директива worker_cpu_affinity получила автоматический режим и поддержку более 64 процессоров.
  • Директиву include теперь можно использовать внутри блока upstream.
  • Директива proxy_cache_convert_head, управляющая преобразованием метода HEAD в GET при кэшировании.
  • Параметр nohostname, запрещающий добавление поля hostname в заголовок сообщения при логировании в syslog.
  • Переменная $realip_remote_addr модуля realip, которая содержит исходный адрес клиента.
  • Переменная $upstream_connect_time, которая содержит время, затраченное на подключение и TLS хэндшейк (если используется шифрование) с бэкендом.
  • Модуль memcached теперь поддерживает byte range запросы.
  • Для блока upstream теперь можно использовать разделяемую память с помощью директивы zone, что, в частности, позволяет всем рабочим процессам иметь одинаковое представление о здоровье проксируемых серверов, но может негативно сказываться на производительности.
  • Поддержка разделяемой памяти в версии под Windows и, соответственно, всех модулей, её использующих.
  • В почтовом прокси-сервере стало возможным задавать разные параметры логирования с помощью директивы error_log на уровнях mail и server.


Предыдущие анонсы: NGINX 1.8/1.9 и NGINX 1.6/1.7.

© Habrahabr.ru