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 เด•เตเด•เตเด•เดฟเด•เตพ = r.headersOut['Set-Cookie']; var เดฒเต†เตป = r.args.len? เดจเดฎเตเดชเตผ(r.args.len) : 0; r.headersOut['Set-Cookie'] = cookies.filter(v=>v.length > len); } เดŽเด•เตโ€Œเดธเตโ€Œเดชเต‹เตผเดŸเตเดŸเต เดกเดฟเดซเต‹เตพเดŸเตเดŸเต {filter};

HTTP เด•เตเดฒเดฏเดจเตเดฑเต เดชเตเดฐเดตเตผเดคเตเดคเดจเด•เตเดทเดฎเดค เดจเตฝเด•เตเดจเตเดจ Fetch API เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเดจเตเดจ ngx.fetch() เดฐเต€เดคเดฟเดฏเตเด‚ เดšเต‡เตผเดคเตเดคเดฟเดŸเตเดŸเตเดฃเตเดŸเต. เดฌเต‹เดกเดฟ, เดนเต†เดกเดฑเตเด•เตพ, เดฌเดซเตผ_เดธเตˆเดธเต, เดฎเดพเด•เตโ€Œเดธเต_เดฑเต†เดธเตโ€Œเดชเต‹เตบเดธเต_เดฌเต‹เดกเดฟ_เดธเตˆเดธเต เด“เดชเตโ€Œเดทเดจเตเด•เตพ เดชเตเดฐเต‹เดธเดธเตเดธเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต† เดˆ เดฐเต€เดคเดฟ เดชเดฟเดจเตเดคเตเดฃเดฏเตเด•เตเด•เตเดจเตเดจเต. เดคเดฟเดฐเดฟเด•เต† เดจเตฝเด•เดฟเดฏ เดชเตเดฐเดคเดฟเด•เดฐเดฃ เด’เดฌเตโ€Œเดœเด•เตเดฑเตเดฑเต, arrayBuffer(), bodyUsed, json(), เดคเดฒเด•เตเด•เต†เดŸเตเดŸเตเด•เตพ, เดถเดฐเดฟ, เดฑเต€เดกเดฏเดฑเด•เตโ€ŒเดŸเต, เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดธเต, เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดธเตโ€ŒเดŸเต†เด•เตโ€Œเดธเตเดฑเตเดฑเต, เดŸเต†เด•เตโ€Œเดธเตโ€Œเดฑเตเดฑเต(), เดŸเตˆเดชเตเดชเต, เดฏเตเด†เตผเดŽเตฝ เดฐเต€เดคเดฟเด•เตพ เดŽเดจเตเดจเดฟเดตเดฏเต† เดชเดฟเดจเตเดคเตเดฃเดฏเตโ€Œเด•เตเด•เตเดจเตเดจเต, เด•เต‚เดŸเดพเดคเต† เดนเต†เดกเตผ เด’เดฌเตโ€Œเดœเด•เตเดฑเตเดฑเต get(), getAll(), has() เดŽเดจเตเดจเดฟเดตเดฏเต† เดชเดฟเดจเตเดคเตเดฃเดฏเตโ€Œเด•เตเด•เตเดจเตเดจเต. เดฐเต€เดคเดฟเด•เตพ. เดซเด‚เด—เตเดทเตป fetch(r) { ngx.fetch('http://nginx.org/') .เดชเดฟเดจเตเดจเต†(เดฎเดฑเตเดชเดŸเดฟ => reply.text()) .then(body => r.return(200, body)) .catch (e => r.return(501, e.message)); }

เดตเดฟเดตเดฟเดง เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเดฟเด‚เด—เต เดญเดพเดทเด•เดณเดฟเตฝ (Python, PHP, Perl, Ruby, Go, JavaScript/Node.js, Java) เดตเต†เดฌเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด’เดฐเต เดชเดฐเดฟเดนเดพเดฐเด‚ เดตเดพเด—เตเดฆเดพเดจเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจ NGINX เดฏเต‚เดฃเดฟเดฑเตเดฑเต 1.22 เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดธเต†เตผเดตเดฑเดฟเดจเตเดฑเต† เดชเตเดฐเดธเดฟเดฆเตเดงเต€เด•เดฐเดฃเดตเตเด‚ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เดพเดตเตเดจเตเดจเดคเดพเดฃเต. NGINX เดฏเต‚เดฃเดฟเดฑเตเดฑเดฟเดจเต เดตเตเดฏเดคเตเดฏเดธเตโ€Œเดค เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเดฟเด‚เด—เต เดญเดพเดทเด•เดณเดฟเตฝ เด’เดจเตเดจเดฟเดฒเดงเดฟเด•เด‚ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพ เด’เดฐเต‡เดธเดฎเดฏเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚, เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดซเดฏเดฒเตเด•เตพ เดŽเดกเดฟเดฑเตเดฑเต เดšเต†เดฏเตเดฏเดพเดคเต†เดฏเตเด‚ เดชเตเดจเดฐเดพเดฐเด‚เดญเดฟเด•เตเด•เดพเดคเต†เดฏเตเด‚ เด…เดตเดฏเตเดŸเต† เดฒเต‹เดžเตเดšเต เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เตพ เดšเดฒเดจเดพเดคเตเดฎเด•เดฎเดพเดฏเดฟ เดฎเดพเดฑเตเดฑเดพเตป เด•เดดเดฟเดฏเตเด‚. เด•เต‹เดกเต เดธเดฟเดฏเดฟเตฝ เดŽเดดเตเดคเตเด•เดฏเตเด‚ เด…เดชเตเดชเดพเดšเตเดšเต† 2.0 เดฒเตˆเดธเตปเดธเดฟเดจเต เด•เต€เดดเดฟเตฝ เดตเดฟเดคเดฐเดฃเด‚ เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต.

NGINX เดฏเต‚เดฃเดฟเดฑเตเดฑเดฟเดจเตเดฑเต† เดชเตเดคเดฟเดฏ เดชเดคเดฟเดชเตเดชเต เดธเตเดฅเดฟเดฐเดค เดฎเต†เดšเตเดšเดชเตเดชเต†เดŸเตเดคเตเดคเตเดจเตเดจเดคเดฟเดฒเตเด‚ เดชเดฐเต€เด•เตเดทเดฃ เด‰เดชเด•เดฐเดฃเด™เตเด™เตพ เดตเดฟเด•เดธเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดฒเตเด‚ เดฌเด—เตเด•เตพ เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดฒเตเด‚ เดถเตเดฐเดฆเตเดง เด•เต‡เดจเตเดฆเตเดฐเต€เด•เดฐเดฟเดšเตเดšเต. Linux-เดจเดพเดฏเดฟ เดœเดจเดฑเต‡เดฑเตเดฑเต เดšเต†เดฏเตโ€Œเดค เดชเดพเด•เตเด•เต‡เดœเตเด•เดณเดฟเตฝ, NGINX เดฏเต‚เดฃเดฟเดฑเตเดฑเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจ เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดฟเดจเต†เดฏเตเด‚ เด—เตเดฐเต‚เดชเตเดชเดฟเดจเต†เดฏเตเด‚ เดฎเดพเดฑเตเดฑเดฟ. เด†เดฐเตเด‚:เด†เดฐเตเด‚ เดŽเดจเตเดจเดคเดฟเดจเตเดชเด•เดฐเด‚, เด—เตเดฐเต‚เดชเตเดชเต เดฏเต‚เดฃเดฟเดฑเตเดฑเดฟเดฒเต† เดตเตเดฏเด•เตเดคเดฟเด—เดค เด‰เดชเดฏเต‹เด•เตเดคเตƒ เดฏเต‚เดฃเดฟเดฑเตเดฑเดฟเดจเต เด•เต€เดดเดฟเตฝ เด‡เดชเตเดชเต‹เตพ เดชเตเดฐเต‹เดธเดธเตเดธเตเด•เตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต. Node.js เดฎเตŠเดกเตเดฏเต‚เดณเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดธเต†เตผเดตเตผ เดฑเดฟเด•เตเดตเดธเตเดฑเตเดฑเดฟเดจเตเดฑเต†เดฏเตเด‚ เดธเต†เตผเดตเตผ เดฑเต†เดธเตโ€Œเดชเต‹เตบเดธเต เด’เดฌเตโ€Œเดœเด•เตเดฑเตเดฑเตเด•เดณเตเดŸเต†เดฏเตเด‚ เดธเตโ€ŒเดŸเตเดฐเต€เด‚ เดŽเดชเดฟเดเดฏเตเดฎเดพเดฏเดฟ เด…เดจเตเดฏเต‹เดœเตเดฏเดค เด‰เดฑเดชเตเดชเดพเด•เตเด•เตเดจเตเดจเต. เดชเตˆเดคเตเดคเตบ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพเด•เตเด•เตเดณเตเดณ "เดชเดพเดคเตเดคเต" เด“เดชเตเดทเตป เด’เดจเตเดจเดฟเดฒเดงเดฟเด•เด‚ เดกเดฏเดฑเด•เตเดŸเดฑเดฟเด•เตพ เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เดพเตป เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต.

เด…เดตเดฒเด‚เดฌเด‚: opennet.ru

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•