Paglabas ng nginx 1.19.7, njs 0.5.1 at NGINX Unit 1.22.0

Ang pangunahing sangay ng nginx 1.19.7 ay inilabas, kung saan nagpapatuloy ang pagbuo ng mga bagong feature (sa parallel na suportadong stable branch 1.18, ang mga pagbabago lamang na nauugnay sa pag-aalis ng mga seryosong error at mga kahinaan ay ginawa).

Pangunahing pagbabago:

  • Kapag ang proseso ng manggagawa ay naubusan ng mga libreng koneksyon, isinasara na ngayon ng nginx hindi lamang ang mga keepalive na koneksyon, kundi pati na rin ang mga koneksyon na naghihintay na magsara ang socket ("lingering close").
  • Ang code sa pagpoproseso ng koneksyon sa HTTP/2 ay malapit sa pagpapatupad ng HTTP/1.x. Ang suporta para sa mga indibidwal na setting na "http2_recv_timeout", "http2_idle_timeout" at "http2_max_requests" ay hindi na ipinagpatuloy pabor sa pangkalahatang mga direktiba na "keepalive_timeout" at "keepalive_requests".
  • Ang mga setting na "http2_max_field_size" at "http2_max_header_size" ay inalis na at "large_client_header_buffers" ang dapat gamitin sa halip.

Kasabay nito, ang njs 0.5.1 ay inilabas, isang JavaScript interpreter para sa nginx web server. Ang njs interpreter ay nagpapatupad ng mga pamantayan ng ECMAScript at nagbibigay-daan sa iyong palawakin ang kakayahan ng nginx na iproseso ang mga kahilingan gamit ang mga script sa configuration. Maaaring gamitin ang mga script sa isang configuration file upang tukuyin ang advanced na logic para sa pagpoproseso ng mga kahilingan, pagbuo ng configuration, dynamic na pagbuo ng tugon, pagbabago ng kahilingan/tugon, o mabilisang paggawa ng mga stub upang malutas ang mga problema sa mga web application.

Ang bagong bersyon ay nagdaragdag ng "js_header_filter" na direktiba, na nagbibigay-daan sa iyong magtakda ng JavaScript function para sa pag-filter at pagbabago ng mga arbitrary na header ng tugon: js_import foo.js; lokasyon / { 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 ? Numero(r.args.len): 0; r.headersOut['Set-Cookie'] = cookies.filter(v=>v.length > len); } i-export ang default na {filter};

Idinagdag din ang paraan ng ngx.fetch(), na nagpapatupad ng Fetch API, na nagbibigay ng functionality ng HTTP client. Sinusuportahan ng pamamaraan ang pagproseso ng mga opsyon sa body, header, buffer_size at max_response_body_size. Ang ibinalik na object na Response ay sumusuporta sa arrayBuffer(), bodyUsed, json(), header, ok, redirect, status, statusText, text(), type at url na mga pamamaraan, at sinusuportahan ng Header object ang get(), getAll() at has() paraan . 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)); }

Maaari mo ring tandaan ang paglalathala ng NGINX Unit 1.22 application server, na nag-aalok ng solusyon para sa pagpapatakbo ng mga web application sa iba't ibang mga programming language (Python, PHP, Perl, Ruby, Go, JavaScript/Node.js at Java). Ang NGINX Unit ay maaaring sabay-sabay na magpatakbo ng maramihang mga application sa iba't ibang mga programming language, ang mga parameter ng paglulunsad na maaaring dynamic na baguhin nang hindi kailangang i-edit ang mga configuration file at i-restart. Ang code ay nakasulat sa C at ipinamahagi sa ilalim ng lisensya ng Apache 2.0.

Ang bagong release ng NGINX Unit ay nakatuon sa pagpapabuti ng katatagan, pagpapalawak ng mga tool sa pagsubok, at pag-aayos ng mga bug. Sa mga package na nabuo para sa Linux, ang user at grupo kung saan tumatakbo ang NGINX Unit ay nabago. Sa halip na nobody:nobody, tumatakbo na ngayon ang mga proseso sa ilalim ng indibidwal na user unit sa unit group. Tinitiyak ang pagiging tugma sa Stream API ng ServerRequest at ServerResponse object mula sa Node.js module. Ang opsyon na "path" para sa mga application ng Python ay nagbibigay-daan sa maraming direktoryo na matukoy.

Pinagmulan: opennet.ru

Magdagdag ng komento