Выпуск nginx 1.21.2 и njs 0.6.2

Сформирован выпуск основной ветки nginx 1.21.2, в рамках которой продолжается развитие новых возможностей (в параллельно поддерживаемой стабильной ветке 1.20 вносятся только изменения, связанные с устранением серьёзных ошибок и уязвимостей).

Основные изменения:

  • Обеспечена блокировка запросов HTTP/1.0, включающих HTTP-заголовок
    “Transfer-Encoding” (появился в версии протокола HTTP/1.1).
  • Прекращена поддержка экспортного набора шифров.
  • Обеспечена совместимость с библиотекой OpenSSL 3.0.
  • Реализована передача заголовков “Auth-SSL-Protocol” и “Auth-SSL-Cipher” серверу аутентификации почтового прокси.
  • В API фильтрации тела запроса разрешена буферизация обрабатываемых данных.
  • При загрузке сертификатов сервера налажено использование уровней безопасности, поддерживаемых начиная с OpenSSL 1.1.0 и задаваемых через параметр “@SECLEVEL=N” в директиве ssl_ciphers.
  • Устранены зависания, проявляющиеся при создании SSL-соединения к бэкендам в модулях stream и gRPC.
  • Решена проблема с записью на диск тела запроса при использовании HTTP/2, в случае отсутствия в запросе заголовка “Content-Length”.

Одновременно состоялся выпуск njs 0.6.2, интерпретатора языка JavaScript для веб-сервера nginx. Интерпретатор njs реализует стандарты ECMAScript и позволяет расширять возможности nginx по обработке запросов с помощью скриптов в конфигурации. Скрипты могут использоваться в файле конфигурации для определения расширенной логики обработки запросов, формирования конфигурации, динамической генерации ответа, модификации запроса/ответа или быстрого создания заглушек с решением проблем в web-приложениях. В новой версии в реализацию Promise добавлены методы Promise.all(), Promise.allSettled(), Promise.any() и Promise.race(). Реализована поддержка объекта AggregateError.

Release. Ссылка here.