Вышел nginx 1.19.7

Вышел nginx 1.19.7 — развивающаяся ветка сервера. В стабильной ветке 1.18 делают только исправления и устраняют уязвимости.

Какие изменения в nginx 1.19.7?

  • Если закончатся свободные соединения, nginx теперь закрывает не только keepalive-соединения, но и соединения в состоянии ожидания закрытия сокета (“lingering close”).
  • Код обработки соединений в HTTP/2 приближен к HTTP/1.x. Поддержку отдельных настроек “http2_recv_timeout”, “http2_idle_timeout” и “http2_max_requests” прекратили в пользу “keepalive_timeout” и “keepalive_requests”.
  • Удалили настройки “http2_max_field_size” и “http2_max_header_size”, вместо которых нужно использовать “large_client_header_buffers”.

Одновременно выпустили njs 0.5.1 — интерпретатор JS для nginx. В эту версию добавили директиву “js_header_filter”: она даёт задать JS-функцию для фильтрации и изменения произвольных заголовков ответа:

   js_import foo.js;
   location / {
       js_header_filter foo.filter;
       proxy_passhttp://127.0.0.1:8081/;
   }
 foo.js:
   function filter(r) {
     var cookies = r.headersOut['Set-Cookie'];
     var len = r.args.len ? Number(r.args.len) : 0;
     r.headersOut['Set-Cookie'] = cookies.filter(v=>v.length > len);
   }
   export default {filter};

Ещё добавили метод ngx.fetch() для реализации API Fetch, который предоставляет функциональность HTTP-клиента. Метод поддерживает обработку опций body, headers, buffer_size и max_response_body_size. В возвращаемом объекте Response поддерживаются методы arrayBuffer(), bodyUsed, json(), headers, ok, redirect, status, statusText, text(), type и url, а в объекте Header методы get(), getAll() и has().

  function fetch(r) {
      ngx.fetch('http://nginx.org/')
      .then(reply => reply.text())
      .then(body => r.return(200, body))
      .catch(e => r.return(501, e.message));
   }

А ещё вышел сервер приложений NGINX Unit 1.22. В новом выпуске основное внимание уделили повышению стабильности, расширению средств для тестирования и исправлению ошибок. В формируемых для Linux пакетах изменены пользователь и группа, под которыми запускается NGINX Unit. Вместо nobody:nobody процессы теперь выполняются под отдельным пользователем unit в группе unit. Теперь появилась совместимость с API Stream объектов ServerRequest и ServerResponse из модуля Node.js. В опции “path” для Python-приложений в новой версии можно указать несколько каталогов.

Залишити відповідь

Дякуємо, що поділились