- PVSM.RU - https://www.pvsm.ru -

Анонс NGINX 1.10 и 1.11

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

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

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

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

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

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

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

Анонс NGINX 1.10 и 1.11 - 1Версия 1.8 больше не поддерживается. Версия 1.10 выделена из версии 1.9, как новая стабильная ветка, а 1.9 перенумерована в 1.11.

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

  • Поддержка динамических модулей. В частности это дает возможность разложить модули по разным пакетам со своими зависимостями и, при необходимости, доустанавливать, подключать и обновлять их отдельно. Так в наших официальных репозиториях [17] мы уже предоставляем набор отдельных пакетов с модулями [18], в том числе модуль njs [19], который позволяет использовать JavaScript в конфигах [9].
  • Новый модуль stream [20] для проксирования и балансировки любого TCP и UDP трафика. Например, теперь вы можете использовать NGINX для балансировки DNS [21] или MySQL [22] серверов.
  • Новый модуль slice [23], который позволяет повысить эффективность кэширования больших файлов за счет разделения их на фрагменты, которые могут быть кэшированы независимо.
  • Модуль SPDY [24] был заменен на модуль HTTP/2 [25]. Последний теперь также поддерживает небуферизированное чтение тела запроса [26].
  • Существенно улучшен модуль sub_filter [27], позволяющий производить замены в теле ответа сервера. Увеличина производительность, появилась возможность использовать переменные в качестве искомой строки и строки замены, а также таких строк теперь можно задавать множество.
  • Опция reuseport у директивы listen [28], позволяющая заметно увеличить производительность на многопроцессорных системах в случаях высокой интенсивности поступления новых соединений. Подробная статья об этом [29].
  • Поддержка TCP во встроенном резолвере [30].
  • Теперь учитывается идемпотентность методов запроса [31] при выборе другого сервера в случае ошибок проксирования. Поведение регулирует новой опцией non_idempotent в директивах proxy_next_upstream [32], fastcgi_next_upstream [33], uwsgi_next_upstream [34] и scgi_next_upstream [35]
  • Пулы потоков [36] теперь можно использовать для записи ответа от бекенда. Управляется директивой aio_write [37]. Подробная статья [38] о том, что такое пулы потоков, для чего они нужны и как их использовать.
  • Улучшена работа кэш-менеджера. Он теперь отслеживает не только занимаемое место на диске, но и объем метаданных в разделяемой памяти.
  • Директива worker_cpu_affinity [39] получила автоматический режим и поддержку более 64 процессоров.
  • Директиву include [40] теперь можно использовать внутри блока upstream [41].
  • Директива proxy_cache_convert_head [42], управляющая преобразованием метода HEAD в GET при кэшировании.
  • Параметр nohostname, запрещающий добавление поля hostname в заголовок сообщения при логировании в syslog [43].
  • Переменная $realip_remote_addr [44] модуля realip [45], которая содержит исходный адрес клиента.
  • Переменная $upstream_connect_time [46], которая содержит время, затраченное на подключение и TLS хэндшейк (если используется шифрование) с бэкендом.
  • Модуль memcached [47] теперь поддерживает byte range запросы [48].
  • Для блока upstream [41] теперь можно использовать разделяемую память с помощью директивы zone [49], что, в частности, позволяет всем рабочим процессам иметь одинаковое представление о здоровье проксируемых серверов, но может негативно сказываться на производительности.
  • Поддержка разделяемой памяти в версии под Windows [50] и, соответственно, всех модулей, её использующих.
  • В почтовом прокси-сервере [51] стало возможным задавать разные параметры логирования с помощью директивы error_log [52] на уровнях mail и server.

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

Автор: VBart

Источник [55]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/nginx/119618

Ссылки в тексте:

[1] полный лог изменений: http://nginx.org/ru/CHANGES.ru-1.10

[2] уже вышел: http://nginx.org/ru/download.html

[3] NGINX Plus: https://www.nginx.com/products/

[4] HTTP/2: https://www.nginx.com/blog/early-alpha-patch-http2/

[5] TCP и UDP проксирование с балансировкой: https://www.nginx.com/blog/announcing-udp-load-balancing/

[6] динамические модули: https://www.nginx.com/blog/dynamic-modules-nginx-1-9-11/

[7] самой крупной: https://www.openhub.net/p/nginx/analyses/latest/languages_summary

[8] более 50% из 10 000 самых нагруженных сайтов в мире: http://w3techs.com/technologies/cross/web_server/ranking

[9] работа над nginScript: https://www.nginx.com/blog/launching-nginscript-and-looking-ahead/

[10] уникальные требования ядра NGINX: https://www.nginx.com/blog/nginscript-why-our-own-javascript-implementation/

[11] документации для разработчиков: https://www.nginx.com/resources/wiki/extending/

[12] ежегодной конференции «nginx.conf» в сентябре 2016: https://www.nginx.com/nginxconf/

[13] расширенной функциональностью: https://www.nginx.com/products/feature-matrix/

[14] примечаниях к релизам: https://www.nginx.com/resources/admin-guide/nginx-plus-releases/

[15] заполнить форму: https://www.nginx.com/products/pricing/#free-trial

[16] связаться с нами: https://www.nginx.com/products/pricing/#contact-us

[17] наших официальных репозиториях: http://nginx.org/ru/linux_packages.html

[18] набор отдельных пакетов с модулями: http://nginx.org/ru/linux_packages.html#dynmodules

[19] модуль njs: https://www.nginx.com/resources/wiki/nginScript/

[20] модуль stream: http://nginx.org/ru/docs/stream/ngx_stream_core_module.html

[21] DNS: https://www.nginx.com/blog/load-balancing-dns-traffic-nginx-plus/

[22] MySQL: https://www.nginx.com/blog/mysql-high-availability-with-nginx-plus-and-galera-cluster/

[23] модуль slice: http://nginx.org/ru/docs/http/ngx_http_slice_module.html

[24] Модуль SPDY: http://nginx.org/ru/docs/http/ngx_http_spdy_module.html

[25] модуль HTTP/2: http://nginx.org/ru/docs/http/ngx_http_v2_module.html

[26] небуферизированное чтение тела запроса: http://nginx.org/ru/docs/http/ngx_http_proxy_module.html#proxy_request_buffering

[27] модуль sub_filter: http://nginx.org/ru/docs/http/ngx_http_sub_module.html

[28] директивы listen: http://nginx.org/ru/docs/http/ngx_http_core_module.html#listen

[29] статья об этом: https://habrahabr.ru/post/259403/

[30] резолвере: http://nginx.org/ru/docs/http/ngx_http_core_module.html#resolver

[31] идемпотентность методов запроса: https://tools.ietf.org/html/rfc7231#section-4.2.2

[32] proxy_next_upstream: http://nginx.org/ru/docs/http/ngx_http_proxy_module.html#proxy_next_upstream

[33] fastcgi_next_upstream: http://nginx.org/ru/docs/http/ngx_http_fastcgi_module.html#fastcgi_next_upstream

[34] uwsgi_next_upstream: http://nginx.org/ru/docs/http/ngx_http_uwsgi_module.html#uwsgi_next_upstream

[35] scgi_next_upstream: http://nginx.org/ru/docs/http/ngx_http_scgi_module.html#scgi_next_upstream

[36] Пулы потоков: http://nginx.org/ru/docs/ngx_core_module.html#thread_pool

[37] директивой aio_write: http://nginx.org/ru/docs/http/ngx_http_core_module.html#aio_write

[38] Подробная статья: https://habrahabr.ru/post/260669/

[39] Директива worker_cpu_affinity: http://nginx.org/ru/docs/ngx_core_module.html#worker_cpu_affinity

[40] Директиву include: http://nginx.org/ru/docs/ngx_core_module.html#include

[41] блока upstream: http://nginx.org/ru/docs/http/ngx_http_upstream_module.html#upstream

[42] Директива proxy_cache_convert_head: http://nginx.org/ru/docs/http/ngx_http_proxy_module.html#proxy_cache_convert_head

[43] логировании в syslog: http://nginx.org/ru/docs/syslog.html

[44] Переменная $realip_remote_addr: http://nginx.org/ru/docs/http/ngx_http_realip_module.html#var_realip_remote_addr

[45] модуля realip: http://nginx.org/ru/docs/http/ngx_http_realip_module.html

[46] Переменная $upstream_connect_time: http://nginx.org/ru/docs/http/ngx_http_upstream_module.html#var_upstream_connect_time

[47] Модуль memcached: http://nginx.org/ru/docs/http/ngx_http_memcached_module.html#memcached_pass

[48] byte range запросы: https://tools.ietf.org/html/rfc7233#section-2.3

[49] директивы zone: http://nginx.org/ru/docs/http/ngx_http_upstream_module.html#zone

[50] версии под Windows: http://nginx.org/ru/docs/windows.html

[51] почтовом прокси-сервере: http://nginx.org/ru/docs/mail/ngx_mail_core_module.html

[52] директивы error_log: http://nginx.org/ru/docs/ngx_core_module.html#error_log

[53] NGINX 1.8/1.9: https://habrahabr.ru/post/256909/

[54] NGINX 1.6/1.7: https://habrahabr.ru/post/220807/

[55] Источник: https://habrahabr.ru/post/282554/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best