Выпуск nginx 1.31.5 и njs 1.0.1

Опубликован выпуск основной ветки nginx 1.31.5, в которой продолжается развитие новых возможностей. В параллельно поддерживаемую стабильную ветку 1.30.x вносятся только изменения, связанные с устранением серьёзных ошибок и уязвимостей. В дальнейшем на базе основной ветки 1.31.x будет сформирована стабильная ветка 1.32. Код проекта написан на языке Си и распространяется под лицензией BSD.

В новом выпуске:

  • Добавлен Rest API для внешнего управления, позволяющий удалённо перезагружать конфигурацию, получать данные о настройках и просматривать статус рабочих процессов. Для включения поддержки API предусмотрена сборочная опция «—with-control-api» и аргумент командой строки «-l». Рекомендуется привязывать API к unix-сокету (nginx -l unix:/path/to/sock). Для обращения к API можно использовать утилиту Curl.
  • Добавлена возможность использования переменной, начинающейся с символа «$», в качестве значения директивы Location. Значение переменной, вычисленное в момент выполнения, определяет условия входа в блок Location. Подобные Location могут использоваться внутри других блоков Location или сами содержать вложенные Location.
    
       map $arg_foo $pred {
           bar  1;
           qux  1;
       }
       location $pred {
           root html;
       }
    
  • Реализован модуль ngx_http_json_module, предоставляющий возможности для разбора данных в формате JSON, извлечения отдельных полей из JSON и использования этих полей в качестве переменных в конфигурации nginx.
  • Добавлена директива «client_body_early_read«, включение которой приводит к чтению тела запроса сразу после получения заголовков.

Одновременно доступен выпуск njs 1.0.1, модуля для интеграции интерпретатора языка JavaScript в http-сервер nginx. Njs позволяет использовать сценарии JavaScript в файлах конфигурации для расширения возможностей nginx. Скрипты могут использоваться для определения расширенной логики обработки запросов, формирования конфигурации, динамической генерации ответов, модификации запроса/ответа или быстрого создания заглушек с решением проблем в web-приложениях. Код проекта написан на Си и распространяется под лицензией BSD.

В выпуске njs 1.0.1 устранены три уязвимости: переполнение буфера в функции xml.exclusiveC14n (CVE-2026-78689),обход ограничения доступа через js_access (CVE-2026-18329) и вызов аварийного завершения рабочего процесса через манипуляции с ngx.fetch (CVE-2026-78222).

Источник: http://www.opennet.ru/opennews/art.shtml?num=66201