Что нового в nginx 1.17.9 и njs?
Вышел выпуск nginx 1.17.9, в котором развивают новый функционал. Напомним: в стабильной ветке nginx 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 добавлена поддержка режима открепленных запросов в 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() в контейнере.