Թողարկվել է nginx 1.25.3-ի հիմնական մասնաճյուղը, որի շրջանակներում շարունակվում է նոր հնարավորությունների զարգացումը։ Զուգահեռաբար պահպանվող կայուն ճյուղը 1.24.x պարունակում է միայն փոփոխություններ՝ կապված լուրջ վրիպակների և խոցելիության վերացման հետ: Հետագայում, հիմնվելով հիմնական ճյուղի 1.25.x-ի վրա, կձևավորվի կայուն ճյուղ 1.26: Ծրագրի կոդը գրված է C-ով և տարածվում է BSD լիցենզիայի ներքո:
Փոփոխությունների թվում.
- Ամրապնդվել է պաշտպանությունը HTTP/2 հաճախորդների աննորմալ գործունեությունից և, մասնավորապես, «Rapid Reset» դասի DoS հարձակումներից, որոնցում ստեղծվում են մեծ թվով անհապաղ վերակայվող թելեր մեկ HTTP/2 կապի շրջանակներում: Լռելյայն կազմաձևում նման հարձակումները սահմանափակվում են «keepalive_requests» մեկ կապի հարցումների քանակի սահմանափակումով (յուրաքանչյուր 1000 հարցումից հետո կապը կզրոյացվի) և «limit_req» սահմանափակումներով: Մեծ թվով շղթաների միջոցով հարցումներով ավելի վաղ արձագանքելու համար ավելացվել է լրացուցիչ սահմանափակում, որը թույլ չի տալիս լռելյայնորեն ստեղծել ավելի քան 256 (2 * max_concurrent_streams) նոր շղթաներ յուրաքանչյուր իրադարձությունների մշակման ցիկլում: Նոր սահմանաչափը հնարավորություն է տալիս սկսել հարցումների արգելափակումը մինչև միաժամանակյա շղթաների քանակի ընդհանուր սահմանաչափի հասնելը, օրինակ, երբ շղթաները մշակվում են ասինխրոն կամ մաքրվում են: Նմանատիպ փոփոխություն ներառվել է նաև մեկ շաբաթ առաջ հրապարակված angie 1.3.1 (nginx fork) թողարկման մեջ։
- Բուֆերների բարելավված կառավարում, որն օգտագործվում է HTTP/2 կապերի ավտոմատ հայտնաբերման ժամանակ:
- Բարելավվել է մեծ թվով «տեղորոշման» հրահանգներով գործարկման կոնֆիգուրացիաների կատարումը:
- Ուղղվել է աշխատանքային գործընթացի խափանումը, որը կարող էր առաջանալ HTTP/2-ը առանց օգտագործելու փորձի ժամանակ։ SSL.
- Ուղղվել է «Կարգավիճակի» վերնագրի սխալ մշակումը, որը վերադարձվել է հետնամասի կողմից դատարկ բացատրական տեքստով:
- Վերակազմակերպման ժամանակ շտկվել է հիշողության արտահոսք, որը տեղի է ունեցել PCRE2 գրադարանով կառուցելիս:
- Ներկայացվել է HTTP/3 արձանագրության աջակցության հետ կապված ուղղումների և բարելավումների մեծ մասը:
Միևնույն ժամանակ, njs 0.8.2-ը, որը JavaScript մեկնաբան է վեբ սերվեր nginx: njs մեկնաբանիչը ներդնում է ECMAScript ստանդարտները և թույլ է տալիս ընդլայնել nginx-ի հարցումների մշակման հնարավորությունները՝ օգտագործելով կարգավորման սկրիպտներ: Սկրիպտները կարող են օգտագործվել կարգավորման ֆայլում՝ հարցումների մշակման առաջադեմ տրամաբանություն սահմանելու, կարգավորում ստեղծելու, պատասխաններ դինամիկ կերպով ստեղծելու, հարցումները/պատասխանները փոփոխելու կամ վեբ հավելվածներում խնդիրները լուծելու համար արագ ստաբներ ստեղծելու համար: Նոր տարբերակը ավելացնում է կոնսոլային օբյեկտ, որը տրամադրում է error(), info(), log(), time(), timeEnd() և warn() մեթոդները: fs մոդուլին ավելացվել է fs.existsSync() մեթոդը:
Կարող եք նաև նշել NGINX Unit 1.31.1 հավելվածի սերվերի հրապարակումը, որը լուծում է ծրագրավորման տարբեր լեզուներով վեբ հավելվածներ գործարկելու համար (Python, PHP, Perl, Ruby, Go, JavaScript/Node.js և Java): NGINX Unit-ը կարող է միաժամանակ մի քանի հավելվածներ գործարկել տարբեր ծրագրավորման լեզուներով, որոնց գործարկման պարամետրերը կարող են դինամիկ փոփոխվել՝ առանց կոնֆիգուրացիայի ֆայլերը խմբագրելու և վերագործարկելու անհրաժեշտության: Բացի սխալների շտկումներից, Wasm մոդուլի նոր տարբերակը թույլ է տալիս բեռնել 4 ԳԲ-ից ավելի տվյալներ, իսկ պատասխանելիս հնարավոր է սահմանել HTTP կարգավիճակի կոդեր։
Source: opennet.ru
