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:



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

Комментарии (35)


  1. Revertis
    29.04.2016 16:49

    Очень жаль, что нет armhf в числе поддерживаемых платформ для Debian :( Очень не хочется собирать руками на ARM-сервачке.


    1. KrD
      29.04.2016 17:00

      Собирайте в qemu, делов-то. :)


      1. Revertis
        29.04.2016 17:21

        Проблема в том, что хотелось бы получить на выходе такой же .deb, как был раньше, или как сейчас в репах 1.62, чтобы и устанавливался туда же и конфиги искал там же :(


        1. VBart
          29.04.2016 17:24
          +3

          Можно в configure скормить такой же набор опций. Формат вывода nginx -V как раз позволяет это сделать.


  1. robert_ayrapetyan
    29.04.2016 18:07
    +1

    Существуют ли планы по разработке удобного HTTP клиент\серверного фреймворка на базе nginx?


    1. VBart
      29.04.2016 19:56

      И да, и нет, смотря что вы под этим подразумеваете. Можно пример?


      1. robert_ayrapetyan
        29.04.2016 20:54

        Некое подобие cpp-netlib\poco\mongoose, но с упором на HTTP клиент\серверную часть.
        Основные фичи:
        — парсер HTTP запросов
        — грамотно организованый пул входящих\исходящих HTTP соединений
        — поддержка новых стандартов протокола
        Т.е. существующий, обновляемый движок nginx, но с человеческим API.


        1. VBart
          29.04.2016 21:35

          Это уже будет nginx 2.0 или что-то в этом роде. Не в ближайшем будущем.


        1. fuCtor
          30.04.2016 06:03

          Что-то вроде этого https://github.com/h2o/h2o/tree/master/examples/libh2o (не nginx, но требованиям вроде соответствует)?


          1. robert_ayrapetyan
            30.04.2016 07:51

            Очень похоже, спасибо за наводку, никогда не попадался этот проект почему-то…
            Судя по issues сыроват еще, но достаточно живой и с приличным набором нужных фич.


    1. alekciy
      29.04.2016 21:20

      Типа CAS?


      1. robert_ayrapetyan
        29.04.2016 21:36

        Почитал про CAS немного — у него только три режима работы: как плагин к апач, как CGI-приложение и через FastCGI. Это не то, через FastCGI к nginx и так есть много способов подцепиться из C\CPP. Я говорил про что то типа существующих native modules, но с человеческим интерфейсом, грубо говоря — NodeJS на C\CPP с движком nginx внутри.


        1. alekciy
          29.04.2016 22:27

          Хм… Т.е. что-то для написания своей логики под nginx? Perl, Lua, NJS, не? Я просто что-то видимо не улавливаю и не понимаю в контексте какого кейса мог появиться такой вопрос.


          1. robert_ayrapetyan
            29.04.2016 23:40

            Lua-скрипты, FastCGI и т.п. — все это значительно проигрывает по сравнению с возможностью использовать движок nginx напрямую из CPP\C-кода.


            1. robert_ayrapetyan
              29.04.2016 23:46

              Потерял очевидное (но важное) слово — проигрывает в производительности конечно.


            1. alekciy
              30.04.2016 07:34

              А мне казалось, что на сях под nginx можно было без проблем писать свой код (фильтры там это вроде называется? просто не сишник, не очень в теме)? Опять же, сейчас наконец-то добавили динамические модули. Разве это не подходит?


              1. robert_ayrapetyan
                30.04.2016 08:20

                Ну какие-то возможности оно дает, конечно, но полноценное event-driven приложение с таймаутами, колбеками, http-клиентом и т.п. в nginx-модуле не развернешь… Можно, конечно, взять libev какой-то прикрутить, libcurl и по кускам насобирать недостающие части, но тогда получится сборная солянка какая-то, проще с нуля написать свое уже…

                Вот взять, к примеру, фейсбуковский proxygen (https://github.com/facebook/proxygen). Все в нем хорошо, но нет родного http-клиента, и не везде его собрать можно (+тащит кучу зависимостей на сотни мб).

                cpp-netlib — и сервер и клиент, и asio, но не дружит с производительностью никак.

                Есть еще куча всяких MonkeyIO, но они какие-то наколеночные все.

                Вот если бы производительность и возможности nginx засунуть в конфетную оббертку аля NodeJs — цены бы не было такому решению на рынке…


  1. apro
    29.04.2016 18:29

    Планирутеся ли включить поддержку LDAP, хотя бы в виде плагина,
    в «mainline»? На мой взгляд довольно востребованная возможность — авторизация через LDAP, а существующий сторонний плагин довольно неудобно деплоить.


    1. VBart
      29.04.2016 19:54

      Можно использовать https://github.com/nginxinc/nginx-ldap-auth совместно с модулем auth_request, с которым мы и так собираем пакеты.


      1. Sleuthhound
        01.05.2016 20:52

        Зачем? если есть https://github.com/kvspb/nginx-auth-ldap и мой подправленный вариант (https://github.com/CHERTS/nginx-auth-ldap) с возможностью сборки в виде динамического модуля


  1. Taciturn
    29.04.2016 19:09

    Планируется ли работа более чем одного worker'а в Windows?


    1. VBart
      29.04.2016 20:03
      +8

      Развитие Windows версии в планах не стоит. Если только кто-нибудь заинтересованный не придет да и сделает.


      1. sebres
        01.05.2016 23:44

        Он уже приходил, ты же знаешь, но всем "известный персонаж" сказал — не-то...


    1. sebres
      01.05.2016 23:40

      Гляньте здесь — https://habrahabr.ru/post/260133/ — я уже давненько сделал… И PR уже там, но всем известный персонаж забраковал пока...


  1. Klimashkin
    30.04.2016 02:32

    Добрый день!
    Есть ли уже или только планируется поддержка HTTP/2 Server Push?


    1. VBart
      30.04.2016 02:34
      +1

      HTTP/2 Server Push пока нет.


      1. Klimashkin
        30.04.2016 02:35

        Есть ли он в планах на 1.11 или в ближайший год не ждать?


        1. VBart
          30.04.2016 02:50
          +1

          На ближайшее время в планах пока нет. Вообще поддержка HTTP/2 браузерами оставляет желать лучшего, и без Server Push столько граблей разложено, буквально несколько недель назад очередные обходили, и сейчас вот ещё Safari c MS Edge отличились. Куда вы спешите?


          1. Klimashkin
            30.04.2016 02:55
            +1

            Мы, фронтенд-разработчики уже просто не можем не спешить ;)

            Спрашиваю, потому что как раз вчера CloudFlare объявился о поддержке у себя с краткой информацией о текущей поддержке браузерами:
            https://blog.cloudflare.com/announcing-support-for-http-2-server-push-2/


            1. VBart
              30.04.2016 03:08
              +5

              Посмотрите сколько багов связанных с поддержкой HTTP/2 только лишь в одном хроме: https://bugs.chromium.org/p/chromium/issues/list?q=component:Internals%3ENetwork%3EHTTP2 — из них там немало про Server Push.


              HTTP/2 — переусложненный протокол, пройдет ещё не один год, прежде чем он везде нормально заработает.


  1. RundomHunter
    01.05.2016 17:42

    А можно узнать, как расчитывается стоимость «NGINX Plus App Pricing» анонсированного в R9?


    1. LEETE
      02.05.2016 19:53
      +1

      Стоимость рассчитывается индивидуально.


  1. ZaEzzz
    01.05.2016 18:06

    Немного удивлен сравнением версий. Open Sourse Nginx Supported platforms — Linux, а вот Nginx Plus так же и для FreeBSD.
    Чем обусловлен этот момент?


    1. VBart
      02.05.2016 19:26

      Речь идет о собираемых пакетах. Я согласен, что выглядит странно. Попрошу чтобы поправили.


  1. steamoor
    03.05.2016 06:19

    >> Параметр nohostname, запрещающий добавление поля hostname в заголовок сообщения при логировании в syslog.

    за это отдельное спасибо (наконец то! :)