nginx 1.19.7 เจฆเฉ เจฎเฉเฉฑเจ เจธเจผเจพเจเจพ เจเจพเจฐเฉ เจเฉเจคเฉ เจเจ เจนเฉ, เจเจฟเจธ เจฆเฉ เจ เฉฐเจฆเจฐ เจจเจตเฉเจเจ เจตเจฟเจธเจผเฉเจธเจผเจคเจพเจตเจพเจ เจฆเจพ เจตเจฟเจเจพเจธ เจเจพเจฐเฉ เจนเฉ (เจธเจฎเจพเจเจคเจฐ เจธเจฎเจฐเจฅเจฟเจค เจธเจฅเจฟเจฐ เจธเจผเจพเจเจพ 1.18 เจตเจฟเฉฑเจ, เจธเจฟเจฐเจซ เจเฉฐเจญเฉเจฐ เจเจฒเจคเฉเจเจ เจ เจคเฉ เจเจฎเจเจผเฉเจฐเฉเจเจ เจฆเฉ เจเจพเจคเจฎเฉ เจจเจพเจฒ เจธเจฌเฉฐเจงเจค เจฌเจฆเจฒเจพเจ เจเฉเจคเฉ เจเจ เจนเจจ)เฅค
เจฎเฉเฉฑเจ เจฌเจฆเจฒเจพเจ :
- ะัะธ ะธััะตัะฟะฐะฝะธะธ ัะฐะฑะพัะธะผ ะฟัะพัะตััะพะผ ัะฒะพะฑะพะดะฝัั ัะพะตะดะธะฝะตะฝะธะน, nginx ัะตะฟะตัั ะทะฐะบััะฒะฐะตั ะฝะต ัะพะปัะบะพ keepalive-ัะพะตะดะธะฝะตะฝะธั, ะฝะพ ะธ ัะพะตะดะธะฝะตะฝะธั ะฒ ัะพััะพัะฝะธะธ ะพะถะธะดะฐะฝะธั ะทะฐะบัััะธั ัะพะบะตัะฐ (ยซlingering closeยป).
- ะะพะด ะพะฑัะฐะฑะพัะบะธ ัะพะตะดะธะฝะตะฝะธะน ะฒ 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; location / { 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 ? Number(r.args.len) : 0; r.headersOut[โSet-Cookieโ] = cookies.filter(v=>v.length > len); } export default {filter};
ะขะฐะบะถะต ะดะพะฑะฐะฒะปะตะฝ ะผะตัะพะด ngx.fetch(), ัะตะฐะปะธะทัััะธะน API Fetch, ะบะพัะพััะน ะฟัะตะดะพััะฐะฒะปัะตั ััะฝะบัะธะพะฝะฐะปัะฝะพััั HTTP-ะบะปะธะตะฝัะฐ. ะะตัะพะด ะฟะพะดะดะตัะถะธะฒะฐะตั ะพะฑัะฐะฑะพัะบั ะพะฟัะธะน body, headers, buffer_size ะธ max_response_body_size. ะ ะฒะพะทะฒัะฐัะฐะตะผะพะผ ะพะฑัะตะบัะต Response ะฟะพะดะดะตัะถะธะฒะฐัััั ะผะตัะพะดั arrayBuffer(), bodyUsed, json(), headers, ok, redirect, status, statusText, text(), type ะธ url, ะฐ ะฒ ะพะฑัะตะบัะต Header ะผะตัะพะดั 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, ะฟัะตะดะปะฐะณะฐััะตะณะพ ัะตัะตะฝะธะต ะดะปั ะพะฑะตัะฟะตัะตะฝะธั ะทะฐะฟััะบะฐ web-ะฟัะธะปะพะถะตะฝะธะน ะฝะฐ ัะฐะทะปะธัะฝัั ัะทัะบะฐั ะฟัะพะณัะฐะผะผะธัะพะฒะฐะฝะธั (Python, PHP, Perl, Ruby, Go, JavaScript/Node.js ะธ Java). ะะพะด ัะฟัะฐะฒะปะตะฝะธะตะผ NGINX Unit ะผะพะถะตั ะพะดะฝะพะฒัะตะผะตะฝะฝะพ ะฒัะฟะพะปะฝััััั ะฝะตัะบะพะปัะบะพ ะฟัะธะปะพะถะตะฝะธะน ะฝะฐ ัะฐะทะฝัั ัะทัะบะฐั ะฟัะพะณัะฐะผะผะธัะพะฒะฐะฝะธั, ะฟะฐัะฐะผะตััั ะทะฐะฟััะบะฐ ะบะพัะพััั ะผะพะถะฝะพ ะธะทะผะตะฝััั ะดะธะฝะฐะผะธัะตัะบะธ ะฑะตะท ะฝะตะพะฑั ะพะดะธะผะพััะธ ะฟัะฐะฒะบะธ ัะฐะนะปะพะฒ ะบะพะฝัะธะณััะฐัะธะธ ะธ ะฟะตัะตะทะฐะฟััะบะฐ. ะะพะด ะฝะฐะฟะธัะฐะฝ ะฝะฐ ัะทัะบะต ะกะธ ะธ ัะฐัะฟัะพัััะฐะฝัะตััั ะฟะพะด ะปะธัะตะฝะทะธะตะน Apache 2.0.
ะ ะฝะพะฒะพะผ ะฒัะฟััะบะต NGINX Unit ะพัะฝะพะฒะฝะพะต ะฒะฝะธะผะฐะฝะธะต ะฑัะปะพ ัะดะตะปะตะฝะพ ะฟะพะฒััะตะฝะธั ััะฐะฑะธะปัะฝะพััะธ, ัะฐััะธัะตะฝะธั ััะตะดััะฒ ะดะปั ัะตััะธัะพะฒะฐะฝะธั ะธ ะธัะฟัะฐะฒะปะตะฝะธั ะพัะธะฑะพะบ. ะ ัะพัะผะธััะตะผัั
ะดะปั Linux ะฟะฐะบะตัะฐั
ะธะทะผะตะฝะตะฝั ะฟะพะปัะทะพะฒะฐัะตะปั ะธ ะณััะฟะฟะฐ, ะฟะพะด ะบะพัะพััะผะธ ะทะฐะฟััะบะฐะตััั NGINX Unit. ะะผะตััะพ nobody:nobody ะฟัะพัะตััั ัะตะฟะตัั ะฒัะฟะพะปะฝััััั ะฟะพะด ะพัะดะตะปัะฝัะผ ะฟะพะปัะทะพะฒะฐัะตะปะตะผ unit ะฒ ะณััะฟะฟะต unit. ะะฑะตัะฟะตัะตะฝะฐ ัะพะฒะผะตััะธะผะพััั ั API Stream ะพะฑัะตะบัะพะฒ ServerRequest ะธ ServerResponse ะธะท ะผะพะดัะปั Node.js. ะ ะพะฟัะธะธ ยซpathยป ะดะปั Python-ะฟัะธะปะพะถะตะฝะธะน ัะฐะทัะตัะตะฝะพ ัะบะฐะทะฐะฝะธะต ะฝะตัะบะพะปัะบะธั
ะบะฐัะฐะปะพะณะพะฒ.
เจธเจฐเฉเจค: opennet.ru