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 месяцев:
Версия 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:
NGINX 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_upstream
,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.