nginx 1.19.7, njs 0.5.1 և NGINX միավոր 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»:

Միևնույն ժամանակ թողարկվեց njs 0.5.1-ը՝ nginx վեբ սերվերի JavaScript թարգմանիչ։ 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. ֆունկցիայի զտիչ(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); } արտահանել լռելյայն {ֆիլտր};

Ավելացվել է նաև ngx.fetch() մեթոդը, որն իրականացնում է Fetch API-ն, որն ապահովում է HTTP հաճախորդի ֆունկցիոնալությունը։ Մեթոդն աջակցում է մարմնի, վերնագրերի, buffer_size և max_response_body_size տարբերակների մշակմանը: Վերադարձված Response օբյեկտն աջակցում է arrayBuffer(), bodyUsed, json(), վերնագրեր, ok, վերահղում, կարգավիճակ, statusText, text(), տեսակի և url մեթոդները, իսկ Header օբյեկտն աջակցում է get(), getAll() և has() մեթոդներ. ֆունկցիա 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-ը: Ոչ ոք:ոչ ոքի փոխարեն, գործընթացներն այժմ աշխատում են խմբային միավորի առանձին օգտվողի միավորի ներքո: Ապահովված է համատեղելիություն Node.js մոդուլից ServerRequest և ServerResponse օբյեկտների Stream API-ի հետ: Python հավելվածների «ուղի» տարբերակը թույլ է տալիս մի քանի դիրեկտորիաներ նշել:

Source: opennet.ru

Добавить комментарий