Nginx 1.19.7, njs 0.5.1 және NGINX Unit 1.22.0 шығарылымы

nginx 1.19.7 негізгі тармағы шығарылды, оның аясында жаңа мүмкіндіктерді дамыту жалғасуда (параллель қолдау көрсетілетін тұрақты тармақта 1.18, тек елеулі қателер мен осалдықтарды жоюға қатысты өзгерістер енгізілген).

Негізгі өзгерістер:

  • Жұмысшы процесінде бос қосылымдар таусылғанда, nginx енді тірі қосылымдарды ғана емес, сонымен қатар розетканың жабылуын күтетін қосылымдарды да жабады («ұзақ жабылу»).
  • 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" пайдаланылуы керек.

Сонымен қатар, nginx веб-серверіне арналған JavaScript аудармашысы njs 0.5.1 шығарылды. njs интерпретаторы ECMAScript стандарттарын жүзеге асырады және nginx-тің конфигурациядағы сценарийлерді пайдаланып сұрауларды өңдеу мүмкіндігін кеңейтуге мүмкіндік береді. Сценарийлерді конфигурация файлында сұрауларды өңдеуге, конфигурацияны құруға, жауапты динамикалық түрде генерациялауға, сұрауды/жауапты өзгертуге немесе веб-қолданбалардағы мәселелерді шешу үшін жылдам түйіндерді жасауға арналған кеңейтілген логиканы анықтау үшін пайдалануға болады.

Жаңа нұсқа «js_header_filter» директивасын қосады, ол ерікті жауап тақырыптарын сүзу және өзгерту үшін JavaScript функциясын орнатуға мүмкіндік береді: js_import foo.js; орын / { 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? Сан(r.args.len) : 0; r.headersOut['Set-Cookie'] = cookies.filter(v=>v.length > len); } экспорттық әдепкі {сүзгі};

Сондай-ақ HTTP клиентінің функционалдығын қамтамасыз ететін Fetch API іске асыратын ngx.fetch() әдісі қосылды. Әдіс денені, тақырыптарды, bufer_size және max_response_body_size опцияларын өңдеуді қолдайды. Қайтарылған Response нысаны arrayBuffer(), bodyUsed, json(), тақырыптар, ok, қайта бағыттау, күй, statusText, text(), type және url әдістерін қолдайды, ал Header нысаны get(), getAll() және has() функцияларын қолдайды. әдістері. функциясы fetch(r) { ngx.fetch('http://nginx.org/') .содан кейін(жауап => жауап.text()) .содан кейін(дене => r.қайтару(200, дене)) .catch (e => r.return(501, e.хабарлама)); }

Сондай-ақ әртүрлі бағдарламалау тілдерінде (Python, PHP, Perl, Ruby, Go, JavaScript/Node.js және Java) веб-қосымшаларды іске қосу шешімін ұсынатын NGINX Unit 1.22 қолданбалы серверінің жариялануын атап өтуге болады. NGINX бірлігі бір уақытта әртүрлі бағдарламалау тілдерінде бірнеше қолданбаларды іске қоса алады, олардың іске қосу параметрлері конфигурация файлдарын өңдеуді және қайта іске қосуды қажет етпестен динамикалық түрде өзгертілуі мүмкін. Код C тілінде жазылған және Apache 2.0 лицензиясы бойынша таратылады.

NGINX Unit жаңа шығарылымы тұрақтылықты жақсартуға, тестілеу құралдарын кеңейтуге және қателерді түзетуге бағытталған. Linux үшін жасалған пакеттерде NGINX бірлігі жұмыс істейтін пайдаланушы мен топ өзгертілді. Ешкім: ешкімнің орнына процестер енді бірлік тобындағы жеке пайдаланушы бірлігі астында орындалады. Node.js модулінен ServerRequest және ServerResponse нысандарының Stream API интерфейсімен қамтамасыз етілген үйлесімділік. Python қолданбаларына арналған «жол» опциясы бірнеше каталогтарды көрсетуге мүмкіндік береді.

Ақпарат көзі: opennet.ru

пікір қалдыру