Издаден nginx 1.19.7, njs 0.5.1 и NGINX Unit 1.22.0

Създаден е изход на основната версия на nginx 1.19.7, в която се продължава развитието на нови възможности (в паралелно поддържаната стабилна версия 1.18 се внасят само промени, свързани с отстраняване на сериозни грешки и уязвимости).

Основни промени:

  • При изчерпване на свободните връзки от работния процес, 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, интерпретатор на JavaScript за на уеб-сервера nginx. Интерпретаторът njs реализира стандартите на ECMAScript и позволява разширяване на възможностите на nginx по обработка на заявки чрез скриптове в конфигурацията. Скриптовете могат да се използват в конфигурационния файл за определяне на разширена логика за обработка на заявки, генериране на конфигурация, динамично генериране на отговори, модифициране на заявки/отговори или бързо създаване на заглушки за решаване на проблеми в уеб приложения.

В новата версия е добавена директива „js_header_filter“, която позволява задаване на JavaScript функция за филтриране и изменение на произволни отговорни заглавия: js_import foo.js; location / { js_header_filter foo.filter; proxy_pass http://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 предлага решение за стартиране на уеб приложения на различни програмни езици (Python, PHP, Perl, Ruby, Go, JavaScript/Node.js и Java). Под управлението на NGINX Unit могат да работят множество приложения на различни програмни езици едновременно, като параметрите за стартиране могат да се променят динамично без нужда от редактиране на конфигурационни файлове и рестартиране. Кодът е написан на C и се разпространява под лиценз Apache 2.0.

В новата версия на NGINX Unit основното внимание е насочено към увеличаване на стабилността, разширяване на средствата за тестване и поправка на грешки. В пакетите за Linux е променен потребителят и групата, под които се стартира NGINX Unit. Вместо nobody:nobody, процесите сега работят под отделен потребител unit в групата unit. Осигурена е съвместимост с API Stream обектите ServerRequest и ServerResponse от модула Node.js. В опцията „path“ за Python приложения е позволено указването на множество директории.

Източник: opennet.ru

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster