Выпуск nginx 1.17.9 и njs 0.3.9

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

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

  • Запрещено указание нескольких строк «Host» в заголовке запроса;
  • Исправлена ошибка при которой nginx игнорировал дополнительные строки «Transfer-Encoding» в заголовке запроса;
  • Внесены исправления, предотвращающие утечки сокетов при использовании протокола HTTP/2;
  • Устранён крах (segmentation fault) рабочего процесса, проявляющийся при использовании OCSP stapling;
  • Внесены исправления в модуль ngx_http_mp4_module;
  • Решена проблема в случаях, когда при перенаправлении ошибок с кодом 494 с помощью директивы ‘error_page’ мог возвращаться ответ с кодом 494 вместо 400;
  • Устранены утечки сокетов при использовании подзапросов в модуле njs и директивы aio.

Дополнительно можно отметить выпуск njs 0.3.9, интерпретатора языка JavaScript для веб-сервера nginx. Интерпретатор njs реализует стандарты ECMAScript и позволяет расширять возможности nginx по обработке запросов с помощью скриптов в конфигурации. Скрипты могут использоваться в файле конфигурации для определения расширенной логики обработки запросов, формирования конфигурации, динамической генерации ответа, модификации запроса/ответа или быстрого создания заглушек с решением проблем в web-приложениях.

В новом выпуске в модуле njs ​​добавлена поддержка режима открепленных запросов в r.subrequest(). Ответы на открепленные подзапросы игнорируются. В отличие от обычных подзапросов, открепленный подзапрос может быть создан внутри обработчика переменной. Также:

  • Добавлен API Promises для модуля «fs»;
  • В модуль «fs» добавлены функции access(), symlink(), unlink(), realpath() и подобные;
  • Введены эффективные с точки зрения потребления памяти обычные массивы;
  • Внесены улучшения в lexer;
  • Внесено исправление в сопоставление нативных функций в обратных трассировках (backtraces). следах;
  • Исправлены callback-вызовы в модуле «fs»;
  • Внесены исправления в Object.getOwnPropertySymbols();
  • Устранено переполнение буфера динамической памяти в njs_json_append_string();
  • Внесено исправление в encodeURI() и decodeURI() в соответствии со спецификацией;
  • Внесено исправление в Number.prototype.toPrecision();
  • Внесено исправление обработку аргумента пробела в JSON.stringify();
  • Внесено исправление в JSON.stringify() с объектами Number() и String();
  • Обеспечено экранирование символов Unicode в JSON.stringify() в соответствии со спецификацией;
  • Внесено исправление в импорт не родных модулей;
  • Внесено исправление в njs.dump() с экземпляром Date() в контейнере.

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