The OpenNET Project / Index page

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

Выпуск сервера приложений NGINX Unit 1.10.0

23.08.2019 09:33

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

В новой версии:

  • Добавлена начальная поддержка встроенного сервера WebSocket, который пока доступен только для Node.js и скоро появится для Java. Для обработки соединений WebSocket в Node.js следует использовать серверный объект из модуля 'unit-http', например "var webSocketServer = require('unit-http/websocket').server";
  • Добавлена поддержка выделения PATH_INFO из URI в модуле PHP, что позволяет корректно обрабатывать запросы вида "/app.php/some/path?some=args";
  • Добавлена возможность маршрутизации запросов по схеме протокола в URL (HTTP или HTTPS);
  • В модуле Java добавлена поддержка multipart-запросов;
  • Улучшена совместимость модуля Node.js с выпусками Node.js 11.10+.


  1. Главная ссылка к новости (https://mailman.nginx.org/pipe...)
  2. OpenNews: Выпуск nginx 1.17.2
  3. OpenNews: Выпуск nginx 1.17.1 и njs 0.3.3
  4. OpenNews: Выпуск сервера приложений NGINX Unit 1.9.0
  5. OpenNews: Сделка по покупке NGINX компанией F5 Networks успешно завершена
  6. OpenNews: Выпуск ngx_php 0.0.13, модуля с интерпретатором PHP для nginx
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/51342-nginx
Ключевые слова: nginx, unit
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (47) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 10:03, 23/08/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –7 +/
    Это старый добрый проверенный nginx с расширениями или новый продукт под раскрученным брендом?
    Надо щюпать кенешн. Вдруг херак херак и в продакшен
     
     
  • 2.2, Alex_K (??), 10:18, 23/08/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Второе.
     
     
  • 3.4, Аноним (4), 10:26, 23/08/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    третье
     
     
  • 4.36, aospan (ok), 02:54, 24/08/2019 [^] [^^] [^^^] [ответить]  
  • +5 +/
    и запеканку
     
     
  • 5.42, Аноним (42), 13:05, 25/08/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А компот?
     
  • 2.7, AlexTedx (?), 10:56, 23/08/2019 [^] [^^] [^^^] [ответить]  
  • +/
    это новый продукт от создателей старого доброго
     
  • 2.9, Valentin V. Bartenev (?), 15:22, 23/08/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Это попытка авторами переосмыслить архитектуру nginx, заложенную в 2002-ом году с учетом 15+ лет опыта и современных реалий. Но не повторять при этом ошибок Apache2, Python3, KDE4 и подобных. А с самого начала зайти сперва с другого угла и не принуждать пользователей мигрировать с одного на другое, параллельно развивая оба продукта.
     
     
  • 3.14, Аноним (14), 15:43, 23/08/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А ничего, что эти продукты предназначены для совершенно разных задач? Unit это сервер приложений, а не реверс-прокси.
     
     
  • 4.17, KonstantinB (ok), 15:48, 23/08/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Но nginx в паре с каким-нибудь php-fpm или uWSGI и используются как application server.
     
     
  • 5.25, Аноним (25), 18:47, 23/08/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    С чего вдруг, реверс прокси на фпм делает его аппсервером?
     
  • 4.20, Valentin V. Bartenev (?), 16:08, 23/08/2019 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Начальная поддержка раздачи статики и проксирования сейчас в разработке. В следующем релизе осенью уже можно ожидать в примитивном виде с дальнейшим развитием.

    У нас нет установки на то, что юнит исключительно сервер приложений. Его архитектура закладывалась с учетом возможности эффективно отдавать статику и проксировать.

     
     
  • 5.23, Мертвые_опята (?), 16:45, 23/08/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Начальная поддержка раздачи статики и проксирования сейчас в разработке.

    А вот это уже очень интересно! Спасибо за новость.
    Внимательно слежу за развитием Nginx Unit, но пока не видел особого смысла в его применении на задачах у меня или моих клиентов. Будем ждать.

     
  • 4.22, Мертвые_опята (?), 16:42, 23/08/2019 [^] [^^] [^^^] [ответить]  
  • +/
    nginx это веб-сервер, а не реверс-прокси.
     
  • 3.15, KonstantinB (ok), 15:44, 23/08/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Валентин, а насколько верна моя догадка, что столь удачная архитектура, основанная на shared memory, родилась из костылей вокруг того факта, что когда-то в 2003-м году Сысоев вопреки своему плану действий вместо тредов сделал воркеры, чтобы по-быстрому решить проблему с раздачей статики на рамблер-фотках? :-)
     
     
  • 4.21, Valentin V. Bartenev (?), 16:20, 23/08/2019 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Исходя из этого Игорь с самого начала заложил обработку слущающих сокетов на асинхронных тредах. Там, где у nginx отдельный воркер, у нас просто тред в процессе роутера. С разделяемой между отдельными процессами воркеров памятью в nginx сполна намучались.

    В юните разделяемая память используется иначе. Она служит исключительно в качестве трубы для передачи данных, а не для хранения состояния. Это избавляет от большинства проблем. Я предложил такую архитектуру с целью устранения накладных расходов на общение с приложениями, когда речь зашла о том, как с ними работать правильно, не теряя асинхронности и изоляции.

     
     
  • 5.26, KonstantinB (ok), 18:54, 23/08/2019 [^] [^^] [^^^] [ответить]  
  • +/
    А, понятно. Спасибо, интересно.

    У меня просто было ничем не обоснованное подозрение, что принцип работы Unit-а изначально придуман для nginx plus :-)

     
  • 5.27, KonstantinB (ok), 18:58, 23/08/2019 [^] [^^] [^^^] [ответить]  
  • +/
    С разделяемой памятью - да уж. Мы как-то давно делали свой in house модуль для хитрого кастомного стриминга, я, правда, в основном со стороны наблюдал, но мата было много :-)
     
  • 5.47, An (??), 14:31, 27/08/2019 [^] [^^] [^^^] [ответить]  
  • +/
    А почему в качестве трубы используется разделяемая память? Почему не хватает пары сокетов?
     
  • 2.13, KonstantinB (ok), 15:38, 23/08/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Это новый продукт, но основан на идеях (и частично коде) из nginx.
     
  • 2.29, Hewlett Packard (?), 22:47, 23/08/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Старый добрый проверенный nginx с расширениями, нацеленный на использование в качестве сервера приложений, называется OpenResty, и оказался слишком сложен в приготовлении для широких масс интернетостроительной отрасли.
     
     
  • 3.37, Аноним (37), 05:06, 24/08/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Вы тут под аппсервером имеете в виду луа-скриптинг? У этого очень узкое применение. Луа мало подходит для больших проектов.
     
     
  • 4.41, Hewlett Packard (?), 03:24, 25/08/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Для БОЛЬШИХ проектов вообще ничего не подходит кроме J2EE и Большого Индийского Аутсорса. Но таких проектов в мире не очень много.
     
  • 2.45, Аноним (45), 06:03, 27/08/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Новый костыль, форсируемый новыми хозяевами старого продукта
     

  • 1.3, Аноним (3), 10:19, 23/08/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > корректно обрабатывать запросы вида "/app.php/some/path?some=args";

    уп-с, оно и этого даже не умело? Верной дорогой идут. Товарищи.

     
     
  • 2.18, KonstantinB (ok), 15:53, 23/08/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Ну, вообще, fastcgi_split_path_info это не так уж и часто нужная вещь. В основном в легаси коде встречается.
     
     
  • 3.24, OpenEcho (?), 18:06, 23/08/2019 [^] [^^] [^^^] [ответить]  
  • +/
    >В основном в легаси коде встречается.

    А можно глянуть на ссылочки, говорящиее что PATH_INFO стал legacy?

     
     
  • 4.28, KonstantinB (ok), 21:42, 23/08/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    legacy в смысле связки с PHP.

    Конструкция вида script.php/foo/bar изначально работала только в apache1 mod_php, и никогда не задумывалась как фича, это был просто побочный эффект реализации.

    Сделать из этого PATH_INFO придумали уже потом :-)

     
  • 2.19, Аноним (19), 16:00, 23/08/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Имея опыт разработки на php в 2004-2008 годах, я верил, что уж в 2019 этот архаичный способ не нужен и все просто перенаправляют все запросы на index.php, что Unit умел с первых бета-версий.
     

  • 1.5, Анон Багоев (?), 10:36, 23/08/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Код на js у них в unit довольно скверно написан. Никак руки до pr не дойдут. Не исключаю наличие там багов.
     
     
  • 2.8, Valentin V. Bartenev (?), 15:07, 23/08/2019 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Добрый день. Будем рады избавиться от скверного кода. =)
     
     
  • 3.30, Hewlett Packard (?), 22:49, 23/08/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Насколько сильно будете рады? В измеримых величинах.
     
     
  • 4.32, Аноним (32), 23:21, 23/08/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Приходите, обсудим: https://www.nginx.com/careers/current-openings/?job_id=1723908
     
     
  • 5.33, Hewlett Packard (?), 23:26, 23/08/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Без javascript не отображается.


     
     
  • 6.34, Valentin V. Bartenev (?), 23:31, 23/08/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Отображается без JS, если угодно: https://boards.greenhouse.io/nginx/jobs/1723908
     
  • 2.10, НяшМяш (ok), 15:29, 23/08/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Кстати, а в каком именно месте код скверный? Я глянул - ну да, в 2019 году писать на прототипах, юзать bind вместо современных классов и стрелочных функций немного странно (хотя может там совместимость декларируется до версий ноды 0.12), но в остальном ничего критичного я не заметил.
     
     
  • 3.12, KonstantinB (ok), 15:37, 23/08/2019 [^] [^^] [^^^] [ответить]  
  • +/
    А что не так в написании кода на прототипах?
    Классы в JS - это просто синтаксический сахар над прототипами, для частного случая.

    Вот сейчас работаю над старым проектом, где все так, и не испытываю абсолютно никаких проблем с этим. Зато работает без транспайлеров в любом недобраузере типа IE.

     
     
  • 4.35, Додо (?), 00:56, 24/08/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Классы читаются гораздо проще, чем прототипы, и возможно, имеют некие внутренние оптимизации в движке.
    В данном случае никаких "транспайлеров" не требуется - пакет работает на Node.js, где уже давно имеется поддержка классов.
     
     
  • 5.40, KonstantinB (ok), 19:17, 24/08/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Читаются чуточку проще, согласен. В новом коде так и делаю. Но переписывать легаси смысла не вижу.
     
  • 2.11, Аноним (11), 15:36, 23/08/2019 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Тоже глянул - используются какие-то нативные функции по работе со строками вместо npm leftpad.
     

  • 1.6, Аноним (6), 10:52, 23/08/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Сырой, но перспективный продукт.
     
     
  • 2.16, Аноним (16), 15:44, 23/08/2019 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Чем больше сырости, тем больше перспективности?
     
  • 2.31, Hewlett Packard (?), 22:51, 23/08/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Список продуктов, про которые в 2019 году этого нельзя было бы сказать, исчезающе мал.
     

  • 1.38, Mail (?), 06:48, 24/08/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Чет америкосы раскочегарились, так и лепят релиз за релизом.
     
  • 1.39, anonymous (??), 10:36, 24/08/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Вот мне нравилась концепция NGINX Unix, но когда пробовал его применять для Go-приложений получалось одно разочарование :(

    - Проблемы с адаптацией (например, если используешь fasthttp в качестве сервера).
    - Производительность снижалась.
    - Начинало подвисать. Приходилось либо долго ждать ответа на запрос, либо перепосылать его.

    Видимо сыроват ещё был. Надо будет в этом году снова попробовать...

     
  • 1.43, Аноним (43), 15:11, 26/08/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Unit уже научился взаимодействовать с nginx через unix socket?
     
     
  • 2.44, Аноним (44), 05:05, 27/08/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Плюсану. А еще оно ondemand не умеет.
     
     
  • 3.46, Аноним (43), 07:00, 27/08/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Та хрен с тем ondemand. Из-за отсутствия поддержки unix socket, невозможно его заюзать в хай лод проекте. TCP сокеты и так очень забиты другой нагрузкой.
     
     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

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