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

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

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

  • Добавлен экспериментальный модуль для выполнения на стороне сервера приложений, скомпилированных в универсальный промежуточный код WebAssembly, который может запускаться в любых ОС и при использовании JIT демонстрирует производительность, близкую к нативному коду.
  • В блоки “action” и “fallback” добавлена поддержка выражения “response_headers” для добавления, удаления или изменения HTTP-заголовков. В качестве параметра задаётся список в виде “имя_заголовка/значение”. Если указанное имя заголовка совпадает с уже выставленным в ответе заголовком, то значение заголовка будет изменено, если заголовок отсутствует – то он будет добавлен, если в качестве значения указан “null” – заголовок будет удалён. Значения можно формировать через вызов JavaScript-функций (NJS) или указание фиксированных данных. { “action”: { “pass”: “applications/api”, “response_headers”: { “X-Version”: null, “Upper-Case”: “‘${host.toUpperCase()}'” } } }
  • Добавлены переменные, содержащие значения HTTP-заголовков ответов, которые можно использовать для изменения или создания других HTTP-заголовков. { “action”: { “pass”: “applications/calc”, “response_headers”: { “Content-Type”: “${response_header_content_type};charset=iso-8859-1” } } }
  • В утилиту командной строки unitc встроена возможность редактирования JSON-конфигурации NGINX Unit через обращение к API. unitc EDIT /config
  • Для приложений на языке Python, использующих ASGI (Asynchronous Server Gateway Interface), добавлена поддержка параметра lifespan_state.
Release. Ссылка here.