Разработчики проекта NGINX представили (https://www.nginx.com/blog/nginx-unit-1-0-released/) выпуск сервера приложений NGINX Unit 1.0 (http://unit.nginx.org/), в рамках которого подготовлено решение для обеспечения запуска web-приложений на различных языках программирования. Под управлением NGINX Unit может одновременно выполняться несколько приложений на разных языках программирования, параметры запуска которых можно изменять динамически без необходимости правки файлов конфигурации и перезапуска. Код написан на языке Си и распространяется (https://github.com/nginx/unit) под лицензией Apache 2.0.
NGINX Unit обслуживает отдачу динамического контента самостоятельно, но также способен работать (http://unit.nginx.org/docs-integration-with-nginx.html) в тандеме с http-сервером nginx, который может выступать в роли балансировщика, кэша или сервера для отдачи статического контента. Изменение параметров запуска приложений производится через специальный RESTful JSON API (http://unit.nginx.org/docs-configuration.html). RESTful API позволяет управлять работой сервера приложений удалённо и централизовано. Доступ к API может быть организован через UNIX domain socket или TCP.
Особенностью реализации является то, что изменение настроек не приводит к перезапуску рабочих процессов - меняются только содержимое структур в памяти, что сводит к минимуму накладные расходы и позволяет менять параметры с любой интенсивностью. Одновременно под управлением NGINX Unit может выполняться несколько приложений на разных языках программирования, в том числе могут сочетаться разные версии языков Python, PHP, Perl, Ruby и Go.
Функциональность NGINX Unit образует несколько процессов:
- Процесс управления конфигурацией;
- Основной процесс для запуска обработчиков web-приложений;
- Многопоточный процесс для маршрутизации вызовов, транслирующий внешние запросы к web-приложениям. Процесс маршрутизации в свою очередь состоит из
- Координатор запросов;
- Рабочие нити, которые принимают запросы клиентов, направляют их web-приложениям и возвращают ответ. Каждая рабочая нить может работать в асинхронном режиме и обслуживать тысячи одновременных соединений.
С правами root выполняется только главный управляющий процесс, а все остальные обработчики запускаются под отдельными непривилегированными пользователями.
Из функциональных изменений по сравнению с выпуском 0.7, отмечается (https://github.com/nginx/unit/blob/master/CHANGES) появление средств для ведения логов доступа (access_log). Запросы на изменение конфигурации через API теперь должны посылаться на URL /config/. Для пользователей, которые хотят на практике оценить возможности NGINX Unit подготовлена (https://www.nginx.com/blog/installing-wordpress-with-nginx-unit/) статья с примерном установки системы управления контентом WordPress для запуска под управлением данного сервера приложений.
URL: http://mailman.nginx.org/pipermail/unit/2018-April/000049.html
Новость: https://www.opennet.ru/opennews/art.shtml?num=48434