The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Выпуск nginx 1.19.5 и сервера приложений Unit 1.21.0

26.11.2020 10:18

Сформирован выпуск основной ветки nginx 1.19.5, в рамках которой продолжается развитие новых возможностей (в параллельно поддерживаемой стабильной ветке 1.18 вносятся только изменения, связанные с устранением серьёзных ошибок и уязвимостей).

Основные изменения:

  • Добавлена новая опция командной строки "-e", позволяющая указать альтернативный файл для записи лога ошибок, который будет использоваться вместо лога, заданного в настройках. Вместо имени файла можно указать специальное значение stderr.
  • При сборке разных модулей-дополнений теперь можно использовать общие исходные файлы.
  • Исправлены ошибки, связанные с работой фильтров тела сообщений, закрытием соединений SSL и возникновением ошибки "upstream sent frame for closed stream" при работе с бэкендами gRPC.

Дополнительно можно отметить релиз сервера приложений NGINX Unit 1.21, предлагающего решение для обеспечения запуска web-приложений на различных языках программирования (Python, PHP, Perl, Ruby, Go, JavaScript/Node.js и Java). Под управлением NGINX Unit может одновременно выполняться несколько приложений на разных языках программирования, параметры запуска которых можно изменять динамически без необходимости правки файлов конфигурации и перезапуска. Код написан на языке Си и распространяется под лицензией Apache 2.0. С особенностями NGINX Unit можно познакомиться в анонсе первого выпуска.

В новом выпуске NGINX Unit предоставлена возможность использования регулярных выражений (PCRE) при определении маршрутов и фильтрации запросов. Например:


      "match": {
                "uri": "~\\.jpe?g$"
            },

Другим значительным улучшением стала поддержка многопоточной обработки запросов в процессах приложений. Для каждого процесса приложениях теперь можно определить число потоков, используемых при обработке запросов, что позволяет экономить память по сравнению с ответвлением отдельных процессов. Многопоточные обработчики реализованы для Java, Python, Perl и Ruby. При использовании ASGI каждый поток в каждом процессе приложения выполняется асинхронно. Настройка числа потоков осуществляется при помощи нового параметра "threads".

В модуле для Python обеспечена совместимость с Python 3.9 и добавлена поддержка старых приложений, использующих интерфейс ASGI 2.0. Для выбора между ASGI и WSGI предложен параметр "protocol".

  1. Главная ссылка к новости (https://mailman.nginx.org/pipe...)
  2. OpenNews: Выпуск nginx 1.19.4
  3. OpenNews: Выпуск сервера приложений NGINX Unit 1.20.0
  4. OpenNews: Спор о правах Rambler на Nginx продолжен в суде США
  5. OpenNews: Предварительный выпуск nginx с поддержкой QUIC и HTTP/3
  6. OpenNews: Релиз nginx 1.18.0
Лицензия: CC-BY
Тип: Программы
Короткая ссылка: https://opennet.ru/54148-nginx
Ключевые слова: nginx, unit
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (44) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Vlad Violentiy (?), 10:22, 26/11/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    когда уже quic в апстирме будет?
     
     
  • 2.2, Программист (?), 10:30, 26/11/2020 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Что он конкретно ВАМ даст? Вы делали тесты и у вас есть реальный прирост в скорости в реальных цифрах?
     
     
  • 3.9, anonymous (??), 12:05, 26/11/2020 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Ну вот я делал. И у меня реально есть прирост для коротких сообщений. Что дальше? :)
     
     
  • 4.10, Аноним (10), 12:08, 26/11/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    ждать
     
  • 4.14, Программист (?), 13:50, 26/11/2020 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Хотелось бы цифры увидеть и понять как часто будет такой прирост и на сколько он большой. Просто ради интереса. Потому что моё мнение это сферический конь. Для гугла с его высоконагруженными сервисами может и есть смысл, а вот для всех остальных - есть ли он?
     
  • 4.24, master (??), 17:35, 26/11/2020 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Ничего, твои тесты вообще ниочём.
     
  • 3.27, Аноним (27), 18:04, 26/11/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    В недавних новостях же писали - 3% дает прироста.
    HTTP/3 == 3%
     
  • 3.40, Аноним (40), 16:57, 28/11/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Его очень не хватает браузерным играм. Хотя, так как все еще не разработано вебсокет-сервера для QUIC придется продолжать костылять на WebRTC.
     
  • 2.3, Ilya Indigo (ok), 10:59, 26/11/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Quic никогда не будет!
    HTTP/3, не раньше чем появится окончательный стандарт.
     
     
  • 3.5, leibniz (ok), 11:02, 26/11/2020 [^] [^^] [^^^] [ответить]  
  • +3 +/
    а пруф можно, пожалуйста?..
     
     
  • 4.18, n00by (ok), 15:23, 26/11/2020 [^] [^^] [^^^] [ответить]  
  • +5 +/
    > а пруф можно, пожалуйста?..

    Интересно, кто и зачем минусует вот такие комментарии? Даже если (предположим), спрашивающий в чём-то не прав, тем не менее, по здешним меркам, сообщение тянет на образец вежливости. Неужели именно это вызывает негативную реакцию?

     
     
  • 5.22, leibniz (ok), 17:20, 26/11/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Боюсь, ответа Вы не получите (:
     
     
  • 6.28, n00by (ok), 18:38, 26/11/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Иногда возможно понять по косвенными признакам.
     
  • 5.25, master (??), 17:37, 26/11/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Я минусую, потому что это синдром iPony
     
     
  • 6.29, n00by (ok), 18:48, 26/11/2020 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Спасибо. Страшно представить, что это.
     
  • 6.32, Аноним (32), 02:22, 27/11/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Почему "iPony"? Это пони робот от компании Apple?
     
  • 6.33, leibniz (ok), 05:50, 27/11/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    я болен им? что же мне делать?!
     
     
  • 7.34, n00by (ok), 11:05, 27/11/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Как правило, кому бы ни были адресованы подобные "диагнозы", они пишутся про себя. Но в данном случае похоже, что отвечающий юродствовал под минусаторов.
     
  • 5.41, Ordu (ok), 20:26, 28/11/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > Интересно, кто и зачем минусует вот такие комментарии?

    Я могу предположить. Минусующий очень не любит QUIC, и ему очень хочется верить в то, что родительский коммент глаголет истину. Запрос пруфов, в понимании минусующего, ставит истину под сомнение, то есть воспринимается как попытка разрушить иллюзию. И хорошо, что это просто минус, люди, бывает, убивают тех, кто покушается на их иллюзии. Ну или они думают, что покушается -- тут уже без разницы, как "покушающийся" оценивает свои действия, важно то, что его действия привели к тому, что иллюзии в голове у минусующего пошатнулись или даже рассыпались.

     
     
  • 6.44, n00by (ok), 09:03, 05/12/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Спасибо, смелое предположение. Могу подтвердить, в частных случаях так и есть, мне угрожали нанесением тяжких телесных, поскольку публикации определённо фигурантам не нравятся. Но там запущенный случай (пугало настолько серьёзно уходит в запои, что даже его коллеги не стесняются говорить об этом на публике), а тут исходное сообщение совершенно безобидно, не представляю, кому оно может не понравиться.
     
  • 3.11, Аноним (11), 12:26, 26/11/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > HTTP/3, не раньше чем появится окончательный стандарт.

    А стандарт не появится, потому что гугловцы выпускают новый QUIC в среднем раз в два месяца. Это их собственный протокол, имеют право.

     
     
  • 4.30, flkghdfgklh (?), 21:54, 26/11/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Ты, как всегда, обосратушки
    Это уже не протокол гугла, а передан в IETF HTTP, где разрабатывается как http/3
     
  • 4.36, burik666 (ok), 17:13, 27/11/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну это как с HTTP/2 и SPDY от Google.
     
  • 2.4, Разработчики nginx (?), 11:01, 26/11/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Vlad Violentiy, скоро.
     
  • 2.23, master (??), 17:34, 26/11/2020 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Надеюсь никогда.
     
  • 2.37, jura12 (ok), 09:16, 28/11/2020 [^] [^^] [^^^] [ответить]  
  • +/
    я видел тесты. он еше тормозней http2. может это проявляется в некоторых условиях?
     

  • 1.6, ano (??), 11:18, 26/11/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    При сборке разных модулей-дополнений теперь можно использовать общие исходные файлы.

    А после дождя будет ясная погода™

     
  • 1.7, Аноним (7), 11:57, 26/11/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    А запятую поставить в новости? Или и
     
     
  • 2.8, odd.mean (ok), 12:02, 26/11/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Уже предложил исправление, дело за модераторами.
     

  • 1.12, Аноним (12), 12:46, 26/11/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    > Вместо имени файла можно указать специальное значение stderr.

    Зачем нужно специально обрабатывать это значение, когда уже есть /dev/stderr? Работает даже там, где автор проги и не предполагал такое использование.

     
     
  • 2.13, пох. (?), 13:01, 26/11/2020 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Потому что авторы очень, очень старые, и еще помнят что помимо "нового стандарта" может быть, внезапно, другой юникс, где нет никакого /dev/stderr

    Но это, конечно, скоро пройдет.

     
     
  • 3.26, master (??), 17:41, 26/11/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > Потому что авторы очень, очень старые

    Нет, потому что голова на месте.

     
     
  • 4.31, пох. (?), 22:32, 26/11/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Так у любителей нового стандарта - тоже на месте. Или во что, по-твоему, они едят?!
     
  • 2.15, Аноним (15), 14:27, 26/11/2020 [^] [^^] [^^^] [ответить]  
  • +6 +/
    Открыл спецификацию posix, ищу /dev/stderr и не могу найти. А, ну да, это потому что там ничего такого нет и не было.
     
  • 2.16, Ordu (ok), 14:33, 26/11/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Угу, а ещё есть /proc/self/fd/2

    Зачем только нужен этот /dev/stderr?

     
     
  • 3.19, пох. (?), 15:44, 26/11/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Это симлинк, примерно туда же. Просто чтоб не запоминать бессмысленные цифирьки.

    "примерно", потому что на самом деле это симлик в /dev/fd/2 - потому что даже в новых стандартах /proc, внезапно, может просто не быть.

     

  • 1.17, GentooBoy (ok), 14:55, 26/11/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    слабо понямаю зачем nginx unit треды. Вообще получяеться что в нем нет канкаренси и он не может на одном потоке обрабатывать больше одного соединения, тогда вопрос нафига это надо если тоже самое может apache ?
     
     
  • 2.20, пох. (?), 15:46, 26/11/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > слабо понямаю зачем nginx unit треды

    это не ему треды, это "приложению" треды.

    > тогда вопрос нафига это надо если тоже самое может apache

    apache не может в сервер приложений, если только это не mod_php (и то с ним какие-то вечные проблемы - вот, в частности, в треды он тоже не может, ему подавай только обычный mpm)

     
  • 2.21, Valentin V. Bartenev (?), 16:57, 26/11/2020 [^] [^^] [^^^] [ответить]  
  • +19 +/
    Unit гораздо сложнее устроен. Если кратко, то Unit это nginx + php-fpm (или любой другой запускатор приложений на любимом ЯП по вкусу) - только современные и без накладных расходов на протокол и сокеты между.

    Вся обработка соединений, маршрутизация между приложениями, а также раздача статики, проксирование  - происходят в отдельном процессе, который называется "router". Этот процесс использует несколько асинхронных потоков, по одному на ядро процессора. Каждый поток имеет свой собственный epoll/kqueue и работает с соединениями.

    По сути этот процесс воплощает собой современный nginx, как бы он выглядел, если бы проектировался сейчас, а не 18 лет назад.

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

    Сами процессы приложения могут быть синхронные или асинхронные в зависимости от ЯП и реализуемых интерфейсов. В новой версии сделали ещё, что бы в каждом процессе приложения могло быть ещё и несколько потоков, где это возможно.

    Тут разумеется есть нюансы, как, например, GIL в Python/Ruby, а вот PHP похоже до сих пор не особо thread-safe, поэтому в нем большого смысла реализовывать это пока нет. Но мы посмотрим.

     
     
  • 3.35, GentooBoy (ok), 12:49, 27/11/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >Далее, если запрос нужно передать на обработку приложению, которое работает в отдельных процессах и изолировано от всего остального, то этот запрос с помощью быстрого IPC, построенного на блоках разделяемой памяти и безлоковых очередях - переправляется в свободный процесс с этим приложением.

    Вот теперь стало понятно где треды.
    Я так и не добрался до покрутить unit, но njs очень порадовал. Быстренько поработать и умереть прямо то что нужно.
    Спасибо за продукт

     
  • 3.38, мяя (?), 13:20, 28/11/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > По сути этот процесс воплощает собой современный nginx, как бы он выглядел, если бы проектировался сейчас, а не 18 лет назад.

    Но Unit не заменяет nginx. Будут ли nginx переписывать или доводить unit до функционала nginx?

     
     
  • 4.42, Valentin V. Bartenev (?), 21:19, 28/11/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > доводить unit до функционала nginx?

    Этим и занимаемся постепенно.

     
     
  • 5.43, мяя (?), 11:51, 29/11/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Понял направление. Спасибо за ответ.
     

  • 1.39, Аноним (39), 14:16, 28/11/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    В NGINX Unit конфиги добавили? Вот это новость, может скоро станет надо.
     
     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Спонсоры:
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2021 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру