Rakirina nginx 1.19.7, njs 0.5.1 û Yekîneya NGINX 1.22.0

Şaxa sereke ya nginx 1.19.7 hate berdan, ku tê de pêşkeftina taybetmendiyên nû berdewam dike (di şaxê stabîl a piştgirîkirî ya paralel 1.18 de, tenê guhertinên têkildarî rakirina xeletî û qelsiyên giran têne çêkirin).

Guhertinên sereke:

  • Dema ku pêvajoyek xebatkar ji girêdanên belaş diqede, nginx naha ne tenê girêdanên xweparastinê, lê di heman demê de girêdanên li benda girtina soketê jî digre ("nêzîkî dirêjkirin").
  • Koda pêvajoya pêwendiyê di HTTP/2 de nêzî pêkanîna HTTP/1.x ye. Piştgiriya mîhengên takekesî "http2_recv_timeout", "http2_idle_timeout" û "http2_max_requests" ji bo rêwerzên giştî "keepalive_timeout" û "keepalive_requests" hate sekinandin.
  • Mîhengên "http2_max_field_size" û "http2_max_header_size" hatin rakirin û divê li şûna wê "large_client_header_buffers" bên bikaranîn.

Di heman demê de, njs 0.5.1 hate berdan, wergerek JavaScript ji bo servera webê nginx. Wergêrê njs standardên ECMAScript bicîh tîne û dihêle hûn kapasîteya nginx-ê berfireh bikin ku serlêdanan bi karanîna skrîptên di veavakirinê de bi kar bîne. Skrîpt dikare di pelek veavakirinê de were bikar anîn da ku mentiqek pêşkeftî ji bo pêvajoykirina daxwazan, çêkirina veavakirinekê, bi dînamîkek bersivek çêbike, daxwazek/bersivekê biguhezîne, an zû biafirîne stûyan ji bo çareserkirina pirsgirêkan di serîlêdanên malperê de.

Guhertoya nû dîrektîfa "js_header_filter" zêde dike, ku dihêle hûn fonksiyonek JavaScript-ê ji bo fîlterkirin û guheztina sernavên bersivên keyfî saz bikin: js_import foo.js; cih / { 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 ? Hejmar(r.args.len) : 0; r.headersOut['Set-Cookie'] = cookies.filter(v=>v.length > len); } îxracata xwerû {filter};

Di heman demê de rêbaza ngx.fetch() jî tê zêdekirin, ku Fetch API-ya ku fonksiyona muwekîlê HTTP peyda dike bicîh tîne. Rêbaz pêvajokirina laş, sernav, vebijarkên buffer_size û max_response_body_size piştgirî dike. Tişta Response ya ku hatî vegerandin arrayBuffer (), bodyUsed, json (), sernivîs, ok, beralîkirin, statû, statusText, nivîs (), şêwazên celeb û url piştgirî dike, û object Header piştgirî dide get(), getAll() û has() rêbazên . fonksiyona fetch(r) { ngx.fetch('http://nginx.org/') .then(bersiv => bersiv.text()) .then(body => r.return(200, laş)) .catch (e => r.return(501, e.peyam)); }

Her weha hûn dikarin bala xwe bidin weşana servera serîlêdanê ya NGINX Unit 1.22, ku çareseriyek ji bo xebitandina sepanên malperê bi zimanên cihêreng ên bernamekirinê (Python, PHP, Perl, Ruby, Go, JavaScript/Node.js û Java) pêşkêşî dike. Yekîneya NGINX dikare di heman demê de gelek serîlêdanan bi zimanên bernamenûsê yên cihêreng bixebite, pîvanên destpêkirinê yên ku dikarin bi dînamîk werin guheztin bêyî ku hewce bike ku pelên mîhengê biguhezîne û ji nû ve dest pê bike. Kod bi C-yê hatî nivîsandin û di bin lîsansa Apache 2.0 de tê belav kirin.

Daxuyaniya nû ya Yekîneya NGINX balê dikişîne ser başkirina aramiyê, berfirehkirina amûrên ceribandinê, û rastkirina xeletiyan. Di pakêtên ku ji bo Linux-ê têne hilberandin de, bikarhêner û koma ku di bin yekîneya NGINX de dimeşe hatine guhertin. Li şûna kes: kes, pêvajo naha di bin yekîneya bikarhênerek kesane ya di yekîneya komê de dimeşîne. Lihevhatina bi Stream API-ya hêmanên ServerRequest û ServerResponse ji modula Node.js re misoger kirin. Vebijarka "rê" ya ji bo sepanên Python dihêle ku gelek pelrêçan bêne diyar kirin.

Source: opennet.ru

Add a comment