nginx 1.19.7၊ njs 0.5.1 နှင့် NGINX Unit 1.22.0 တို့ကို ဖြန့်ချိသည်

nginx 1.19.7 ၏ ပင်မအကိုင်းအခက်ကို ထုတ်ဝေလိုက်ပါပြီ၊ အင်္ဂါရပ်အသစ်များ ဆက်လက်ဖြစ်ထွန်းလာသည် (အပြိုင်ပံ့ပိုးထားသည့် တည်ငြိမ်သောဌာနခွဲ 1.18 တွင်၊ ကြီးလေးသောအမှားအယွင်းများနှင့် အားနည်းချက်များကို ဖယ်ရှားရေးဆိုင်ရာ အပြောင်းအလဲများသာ ပြုလုပ်သည်)။

အဓိကပြောင်းလဲမှုများ-

  • အလုပ်သမား လုပ်ငန်းစဉ်တစ်ခုသည် အခမဲ့ချိတ်ဆက်မှုများ ကုန်ဆုံးသွားသောအခါ၊ ယခု nginx သည် သိမ်းဆည်းထားသောချိတ်ဆက်မှုများသာမက socket ပိတ်ရန်စောင့်ဆိုင်းနေသည့် ချိတ်ဆက်မှုများကိုလည်း ပိတ်သွားသည် ("ကြာရှည်စွာပိတ်")။
  • 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" အစား "large_client_header_buffers" ကို အသုံးပြုသင့်ပါသည်။

တစ်ချိန်တည်းမှာပင်၊ njs 0.5.1 သည် nginx ဝဘ်ဆာဗာအတွက် JavaScript စကားပြန်ကို ထုတ်ပြန်ခဲ့သည်။ njs စကားပြန်သည် ECMAScript စံနှုန်းများကို အကောင်အထည်ဖော်ပြီး ဖွဲ့စည်းမှုတွင် scripts များကို အသုံးပြု၍ တောင်းဆိုမှုများကို လုပ်ဆောင်ရန် nginx ၏စွမ်းရည်ကို ချဲ့ထွင်ခွင့်ပြုသည်။ တောင်းဆိုမှုများကို လုပ်ဆောင်ရန်အတွက် အဆင့်မြင့် လော့ဂျစ်ကို သတ်မှတ်ရန်၊ ဖွဲ့စည်းမှုပုံစံတစ်ခု ဖန်တီးခြင်း၊ တုံ့ပြန်မှုတစ်ခု ဖန်တီးခြင်း၊ တောင်းဆိုမှု/တုံ့ပြန်မှုကို မွမ်းမံပြင်ဆင်ခြင်း၊ သို့မဟုတ် ဝဘ်အက်ပ်လီကေးရှင်းများတွင် ပြဿနာများကို ဖြေရှင်းရန် မျဉ်းခွဲများ အမြန်ဖန်တီးရန် Script များကို အသုံးပြုနိုင်သည်။

ဗားရှင်းအသစ်တွင် “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); } မူရင်း {filter} ကို တင်ပို့ခြင်း၊

ထို့အပြင် HTTP ကလိုင်းယင့်လုပ်ဆောင်နိုင်စွမ်းကိုပံ့ပိုးပေးသည့် Fetch API ကိုအကောင်အထည်ဖော်သည့် ngx.fetch() နည်းလမ်းကိုလည်း ထည့်သွင်းထားသည်။ နည်းလမ်းသည် ကိုယ်ထည်၊ ခေါင်းစီးများ၊ buffer_size နှင့် max_response_body_size ရွေးချယ်မှုများကို လုပ်ဆောင်ခြင်းကို ပံ့ပိုးပေးပါသည်။ ပြန်လာသော တုံ့ပြန်မှုအရာဝတ္တုသည် arrayBuffer(), bodyUsed, json(), ခေါင်းစီးများ၊ ok, redirect, status, statusText, text(), အမျိုးအစားနှင့် url နည်းလမ်းများကို ပံ့ပိုးပေးပြီး Header object သည် get(), getAll() နှင့် has() ကို ပံ့ပိုးပေးသည်။ နည်းလမ်းများ 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)); }

ဝဘ်အပလီကေးရှင်းများကို ပရိုဂရမ်းမင်းဘာသာစကားအမျိုးမျိုးဖြင့် အသုံးပြုရန်အတွက် ဖြေရှင်းချက်ပေးသည့် NGINX Unit 1.22 အက်ပလီကေးရှင်းဆာဗာ၏ထုတ်ဝေမှုကိုလည်း မှတ်သားနိုင်ပါသည်။ NGINX Unit သည် မတူညီသော ပရိုဂရမ်းမင်းဘာသာစကားများဖြင့် အပလီကေးရှင်းများစွာကို တစ်ပြိုင်နက်တည်း လုပ်ဆောင်နိုင်သည်၊ ၎င်း၏ launch parameters များသည် configuration files များကို တည်းဖြတ်ပြီး ပြန်လည်စတင်ရန်မလိုအပ်ဘဲ dynamically ပြောင်းလဲနိုင်သည်။ ကုဒ်ကို C ဖြင့်ရေးသားထားပြီး Apache 2.0 လိုင်စင်အောက်တွင် ဖြန့်ဝေထားသည်။

NGINX Unit ၏ အသစ်ထွက်ရှိမှုသည် တည်ငြိမ်မှုကို ပိုမိုကောင်းမွန်စေခြင်း၊ စမ်းသပ်ကိရိယာများ တိုးချဲ့ခြင်းနှင့် ချို့ယွင်းချက်များကို ပြင်ဆင်ခြင်းတို့ကို အာရုံစိုက်ထားသည်။ Linux အတွက် ထုတ်လုပ်သည့် ပက်ကေ့ဂျ်များတွင်၊ NGINX Unit လည်ပတ်မှုအောက်ရှိ အသုံးပြုသူနှင့် အုပ်စုကို ပြောင်းလဲထားသည်။ မည်သူမျှ- မည်သူမျှ အစား၊ အုပ်စုယူနစ်ရှိ သုံးစွဲသူတစ်ဦးချင်းစီ၏ အောက်တွင် လုပ်ငန်းစဉ်များ လုပ်ဆောင်နေပြီဖြစ်သည်။ Node.js module မှ ServerRequest နှင့် ServerResponse objects များ၏ Stream API နှင့် လိုက်ဖက်မှုရှိစေရန် အာမခံပါသည်။ Python အပလီကေးရှင်းများအတွက် "လမ်းကြောင်း" ရွေးချယ်မှုသည် လမ်းညွှန်အများအပြားကို သတ်မှတ်ခွင့်ပြုသည်။

source: opennet.ru

မှတ်ချက် Add