The OpenNET Project / Index page

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

Увидел свет сервер приложений NGINX Unit 0.3

30.12.2017 09:16

Доступен третий публичный выпуск сервера приложений NGINX Unit, в рамках которого развивается решение для обеспечения запуска web-приложений на различных языках программирования. Проект пока находится на стадии бета-тестирования и не рекомендован для промышленного использования. Код написан на языке Си и распространяется под лицензией Apache 2.0.

Под управлением NGINX Unit может одновременно выполняться несколько приложений на разных языках программирования, в том числе могут сочетаться разные версии языков (например, PHP 5 и PHP 7, Python 2.7 и Python 3.4). В настоящий момент поддерживаются Python, PHP и Go, а на будущее запланирована поддержка JavaScript/Node.js, Java и Ruby. NGINX Unit может обслуживать отдачу динамического контента как самостоятельно, так и работать в тандеме с http-сервером nginx, который в этом случае выступает в роли балансировщика, кэша или сервера для отдачи статического контента.

NGINX Unit предоставляет возможность динамического изменения параметров запуска приложений через специальный RESTful JSON API, без необходимости правки файлов конфигурации и перезапуска (ответ на потребность пользователей nginx в возможностях ".htaccess"). Доступ к API может быть организован через UNIX domain socket или TCP, что позволяет управлять работой сервера приложений удалённо и централизовано. Изменение настроек не приводит к перезапуску рабочих процессов - меняются только содержимое структур в памяти, что сводит к минимуму накладные расходы и позволяет менять параметры с любой интенсивностью.

Работу NGINX Unit обеспечивает несколько взаимодействующих процессов: процесс управления конфигурацией, основной процесс для запуска обработчиков web-приложений и многопоточный процесс для маршрутизации вызовов, транслирующий внешние запросы к web-приложениям. Процесс маршрутизации в свою очередь состоит из координатора запросов и рабочих нитей, которые принимают запросы клиентов, направляют их web-приложениям и возвращают ответ. Каждая рабочая нить может работать в асинхронном режиме и обслуживать тысячи одновременных соединений. С правами root выполняется только главный управляющий процесс, а все остальные обработчики запускаются под отдельными непривилегированными пользователями.

Изменения в новой версии:

  • Добавлена опция "limits.requests" для ограничения числа запросов к web-приложению (после выполнения заданного числа запросов обработчик завершает свою работу);
  • Добавлена опция "limits.timeout" для задания таймаута выполнения web-приложения, без учёта времени запуска и нахождения в очереди;
  • С целью минимизации задержек проведена оптимизация кода обработки запросов к web-приложениям;
  • Добавлена поддержка HTTP-соединений в режиме keep-alive;
  • Для настройки виртуальных окружений Python добавлена опция "home";
  • Для Python добавлена возможность создания обработчиков выхода при помощи модуля atexit;
  • Усовершенствован модуль для языка Go, который переименован в "nginx/unit".


  1. Главная ссылка к новости (http://mailman.nginx.org/piper...)
  2. OpenNews: Доступен сервер приложений NGINX Unit 0.2
  3. OpenNews: Релиз HTTP-сервера nginx 1.12.0
  4. OpenNews: Уязвимость в LibreSSL, затрагивающая механизм проверки TLS-сертификатов в nginx
  5. OpenNews: Yandex опубликовал статический анализатор файлов конфигурации nginx
  6. OpenNews: Увеличение пропускной способности и минимизация задержек на серверах с nginx
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/47829-unit
Ключевые слова: unit, nginx
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (27) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Витя Пиканов (?), 09:21, 30/12/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Круто, смогу теперь нормально и без попо-боли одновременно запускать приложухи на Python, PHP и Go, эдакий microservices
     
     
  • 2.2, Аноним (-), 09:31, 30/12/2017 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Витя, ты и сейчас это можешь делать. С помощью контейнеров, правда, но работает отлично.
     
     
  • 3.3, Аноним (-), 09:49, 30/12/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    - с стабильным релизом контейнеры-шмонтейнеры станут не нужны.
    - порог вхожения в микросервисы значительно упростится
     
     
  • 4.14, Аноним (-), 14:40, 30/12/2017 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > порог вхожения в микросервисы значительно упростится

    Это-то и пугает...

     
     
  • 5.26, Аноним (-), 23:29, 30/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > Это-то и пугает...

    Там появятся пользователи!

     
     
  • 6.27, rshadow (ok), 00:00, 31/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    на серверах? ЛОЛ
     
  • 5.31, Аноним (-), 06:48, 02/01/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Боишься остаться без работы?
     
  • 3.4, Аноним (-), 09:51, 30/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    а если сопоставить цену поддержки инфраструктуры на контейнерах и на базе nginx unit?
     
     
  • 4.7, Аноним (-), 10:06, 30/12/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    То принципиальной разницы не увидим.
     
     
  • 5.9, mrd (??), 10:30, 30/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Зависит от желания сделать это все безопасным. Для безопасных контейнеров нужен pipeline чтобы быстро можно было все обновить (в идеале).
     
     
  • 6.12, username (??), 11:38, 30/12/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Зависит от желания сделать это все безопасным. Для безопасных контейнеров нужен pipeline
    > чтобы быстро можно было все обновить (в идеале).

    В вендор локе по определению не может быть ничего безопасного. Спроси у них почему куб в ентерпрайз версии и нет до сих пор экспорта в aci. А еще, где версия без демона и нормальные pgp подписи пакетов. Ребята на пути к успеху.

     
  • 4.28, rshadow (ok), 00:03, 31/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    В продакшене все равно будут контейнеры. А юнит используется для _однообразного_ и онлайн-управляемого запуска сервисов из разных языков.
     
  • 3.11, username (??), 11:34, 30/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Что, серьёзно? Т.е волюм уже перестал корруптить при проблемах с io и докер демон перестал терять контейнеры и быть целой историей для изучения?
    Использую его там где нет выхода а в остальных случаях изоляцию и контроль зависимостей делает habitat.
     
  • 2.30, Аноним (-), 13:36, 31/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Уже давно: https://uwsgi-docs.readthedocs.io/en/latest/
     

  • 1.5, Аноним (-), 09:54, 30/12/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    А чет думал что и раньше можно было... Ну например nginx + php, а если язык тянет свой веб сервер то можно чтоб просто через nginx проксировалось.. Или я где-то ошибаюсь?
     
     
  • 2.6, Аноним (-), 09:55, 30/12/2017 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Отвечаю сам себе же) я все понял.. Убрали надобность перезапуска сервера
     
     
  • 3.29, rshadow (ok), 00:05, 31/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    В больших конторах типа яндекса или гугла 100500 разных проектов и языков. Изучать нюьансы работы  и поддерживать каждый самописный сервер накладно. Через юнит для админа все будет одинаково.
     

  • 1.13, Аноним (-), 13:49, 30/12/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    RESTful JSON API - в тексте битая ссылка
     
     
  • 2.20, Аноним (-), 16:27, 30/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    исправь
     

  • 1.15, Аноним (-), 14:42, 30/12/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Какой смысл был ведь Passenger? Еще и на лицензии апачь. Вообщем странно это все.
     
  • 1.16, user455 (?), 14:56, 30/12/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    опоздали они с ним. зачем нужен этот сервер, если приложение можно запустить в контейнере?
     
     
  • 2.17, рыба ест людей (?), 15:40, 30/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Зачем запускать приложение в контейнере, если можно его запустить в сервере приложений?
     
  • 2.18, Аноним (-), 15:45, 30/12/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Затем чтобы не копаться в мусорных контейнерах.
     

  • 1.21, annual slayer (?), 17:21, 30/12/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    а в случае python это будет типа замены gunicorn?
     
     
  • 2.22, Аноним (-), 19:36, 30/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    да
     

  • 1.23, Лис (?), 22:05, 30/12/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А можно так Go прикрутить напрямую в nginx?
     
     
  • 2.24, KonstantinB (ok), 23:13, 30/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    nginx unit технически не имеет никакого отношения к веб-серверу nginx. Общее только название и авторы.
     

  • 1.25, KonstantinB (ok), 23:19, 30/12/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Ссылки в новости битые.

    Конфигурация (в т.ч. через JSON API):
    http://unit.nginx.org/configuration/

    Интеграция с nginx:
    http://unit.nginx.org/integration/

    Видимо, сайт, как и сам unit, в глубокой бете и недавно менялся. Хотя редиректы могли бы и поставить.

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



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

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