เบชเบฒเบเบฒเบเบปเปเบเบเปเบเบญเบ 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, ะธะฝัะตัะฟัะตัะฐัะพัะฐ ัะทัะบะฐ JavaScript ะดะปั ะฒะตะฑ-ัะตัะฒะตัะฐ nginx. ะะฝัะตัะฟัะตัะฐัะพั njs ัะตะฐะปะธะทัะตั ััะฐะฝะดะฐััั ECMAScript ะธ ะฟะพะทะฒะพะปัะตั ัะฐััะธัััั ะฒะพะทะผะพะถะฝะพััะธ nginx ะฟะพ ะพะฑัะฐะฑะพัะบะต ะทะฐะฟัะพัะพะฒ ั ะฟะพะผะพััั ัะบัะธะฟัะพะฒ ะฒ ะบะพะฝัะธะณััะฐัะธะธ. ะกะบัะธะฟัั ะผะพะณัั ะธัะฟะพะปัะทะพะฒะฐัััั ะฒ ัะฐะนะปะต ะบะพะฝัะธะณััะฐัะธะธ ะดะปั ะพะฟัะตะดะตะปะตะฝะธั ัะฐััะธัะตะฝะฝะพะน ะปะพะณะธะบะธ ะพะฑัะฐะฑะพัะบะธ ะทะฐะฟัะพัะพะฒ, ัะพัะผะธัะพะฒะฐะฝะธั ะบะพะฝัะธะณััะฐัะธะธ, ะดะธะฝะฐะผะธัะตัะบะพะน ะณะตะฝะตัะฐัะธะธ ะพัะฒะตัะฐ, ะผะพะดะธัะธะบะฐัะธะธ ะทะฐะฟัะพัะฐ/ะพัะฒะตัะฐ ะธะปะธ ะฑััััะพะณะพ ัะพะทะดะฐะฝะธั ะทะฐะณะปััะตะบ ั ัะตัะตะฝะธะตะผ ะฟัะพะฑะปะตะผ ะฒ web-ะฟัะธะปะพะถะตะฝะธัั .
ะ ะฝะพะฒะพะน ะฒะตััะธะธ ะดะพะฑะฐะฒะปะตะฝะฐ ะดะธัะตะบัะธะฒะฐ ยซ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