Сформирован выпуск основной ветки 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.