ืžืขืœื“ื•ื ื’ ืคื•ืŸ nginx 1.19.7, njs 0.5.1 ืื•ืŸ NGINX Unit 1.22.0

ื“ื™ ื”ื•ื™ืคึผื˜ ืฆื•ื•ื™ื™ึทื’ ืคื•ืŸ nginx 1.19.7 ืื™ื– ื‘ืืคืจื™ื™ื˜, ืื™ืŸ ื•ื•ืึธืก ื“ื™ ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ืคื•ืŸ ื ื™ื™ึท ืคึฟืขื™ึดืงื™ื™ื˜ืŸ ื”ืืœื˜ (ืื™ืŸ ื“ื™ ืคึผืึทืจืึทืœืขืœ ื’ืขืฉื˜ื™ืฆื˜ ืกื˜ืึทื‘ื™ืœ ืฆื•ื•ื™ื™ึทื’ 1.18, ื‘ืœื•ื™ื– ืขื ื“ืขืจื•ื ื’ืขืŸ ืฉื™ื™ึทื›ื•ืช ืฆื• ื“ื™ ื™ืœื™ืžืึทื ื™ื™ืฉืึทืŸ ืคื•ืŸ ืขืจื ืกื˜ ืขืจืจืึธืจืก ืื•ืŸ ื•ื•ืึทืœื ืขืจืึทื‘ื™ืœื™ื˜ื™ื– ื–ืขื ืขืŸ ื’ืขืžืื›ื˜).

ื”ื•ื™ืคึผื˜ ืขื ื“ืขืจื•ื ื’ืขืŸ:

  • ื•ื•ืขืŸ ืึท ืึทืจื‘ืขื˜ืขืจ ืคึผืจืึธืฆืขืก ืœื•ื™ืคื˜ ืื•ื™ืก ืคื•ืŸ ืคืจื™ื™ ืงืึทื ืขืงืฉืึทื ื–, nginx ืื™ืฆื˜ ืงืœืึธื•ื–ื™ื– ื ื™ื˜ ื‘ืœื•ื™ื– ืœืขื‘ืขื“ื™ืง ืงืึทื ืขืงืฉืึทื ื–, ืึธื‘ืขืจ ืื•ื™ืš ืงืึทื ืขืงืฉืึทื ื– ื•ื•ืืจื˜ืŸ ืคึฟืึทืจ ื“ื™ ื›ืึธืœืขืœ ืฆื• ืคืึทืจืžืึทื›ืŸ ("ืœื™ื ื’ื’ืขืจื™ื ื’ ื ืึธืขื ื˜").
  • ื“ืขืจ ืงืฉืจ ืคึผืจืึทืกืขืกื™ื ื’ ืงืึธื“ ืื™ืŸ ื”ื˜ื˜ืคึผ / 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" ื–ืขื ืขืŸ ืึทื•ื•ืขืงื’ืขื ื•ืžืขืŸ ืื•ืŸ "ืœืึทืจื’ืข_ืงืœื™ืขื ื˜_ื”ืขื“ืขืจ_ื‘ืึทืคืขืจื–" ื–ืึธืœ ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื™ื ื˜ ืึทื ืฉื˜ืึธื˜.

ืื™ืŸ ื“ืขืจ ื–ืขืœื‘ืขืจ ืฆื™ื™ื˜, njs 0.5.1, ื ื“ื–ืฉืึทื•ื•ืึทืกืงืจื™ืคึผื˜ ืื™ื‘ืขืจื–ืขืฆืขืจ ืคึฟืึทืจ ื•ื•ืขื‘ ืกืขืจื•ื•ืขืจ nginx. ื“ืขืจ njs ืื™ื ื˜ืขืจืคึผืจืขื˜ืขืจ ื ื™ืฆื˜ ECMAScript ืกื˜ืึทื ื“ืึทืจื“ืŸ ืื•ืŸ ืขืจืœื•ื™ื‘ื˜ ืื™ื™ืš ืฆื• ืคืืจื‘ืจื™ื™ื˜ืขืจืŸ nginx'ืก ืคืืจืœืื ื’ ืคึผืจืึทืกืขืกื™ื ื’ ืžืขื’ืœืขื›ืงื™ื™ื˜ืŸ ื ื™ืฆื ื“ื™ืง ืงืึธื ืคื™ื’ื•ืจืึทืฆื™ืข ืกืงืจื™ืคึผื˜ืŸ. ืกืงืจื™ืคึผื˜ืŸ ืงืขื ืขืŸ ื’ืขื ื•ืฆื˜ ื•ื•ืขืจืŸ ืื™ืŸ ื“ืขืจ ืงืึธื ืคื™ื’ื•ืจืึทืฆื™ืข ื˜ืขืงืข ืฆื• ื“ืขืคื™ื ื™ืจืŸ ืึทื•ื•ืึทื ืกื™ืจื˜ืข ืคืืจืœืื ื’ ืคึผืจืึทืกืขืกื™ื ื’ ืœืึธื’ื™ืง, ื“ื–ืฉืขื ืขืจื™ืจืŸ ืงืึธื ืคื™ื’ื•ืจืึทืฆื™ืขืก, ื“ื™ื ืึทืžื™ืฉ ื“ื–ืฉืขื ืขืจื™ืจืŸ ืขื ื˜ืคึฟืขืจืก, ืžืึธื“ื™ืคื™ืฆื™ืจืŸ ืคืืจืœืื ื’ืขืŸ/ืขื ื˜ืคึฟืขืจืก, ืื“ืขืจ ืฉื ืขืœ ืฉืึทืคึฟืŸ ืกื˜ืึทื‘ืก ืฆื• ืกืึธืœื•ื•ืขืŸ ืคึผืจืึธื‘ืœืขืžืขืŸ ืื™ืŸ ื•ื•ืขื‘ ืึทืคึผืœื™ืงืึทืฆื™ืขืก.

ื“ื™ ื ื™ื™ึทืข ื•ื•ืขืจืกื™ืข ืžื•ืกื™ืฃ ื“ื™ "js_header_filter" ื“ื™ืจืขืงื˜ื™ื•ื•, ื•ื•ืึธืก ืึทืœืึทื•ื– ืื™ืจ ืฆื• ืฉื˜ืขืœืŸ ืึท ื“ื–ืฉืึทื•ื•ืึทืกืงืจื™ืคึผื˜ ืคึฟื•ื ืงืฆื™ืข ืคึฟืึทืจ ืคื™ืœื˜ืขืจื™ื ื’ ืื•ืŸ ื˜ืฉืึทื ื’ื™ื ื’ ืึทืจื‘ื™ื˜ืจืึทืจื™ืฉ ืขื ื˜ืคืขืจ ื›ืขื“ืขืจื–: js_import foo.js; ืึธืจื˜ / {js_header_filter foo.filter; ืคืจืืงืกื™_ืคึผืึทืกืก http://127.0.0.1:8081/; } foo.js: ืคึฟื•ื ืงืฆื™ืข ืคื™ืœื˜ืขืจ (ืจ) {ื•ื•ืึทืจ ืงื™ื›ืœืขืš = r.headersOut ['ืกืขื˜-ืงื™ื›ืœ']; ื•ื•ืึทืจ ืœืŸ = ืจ.ืึทืจื’ืก.ืœืขืŸ? ื ื•ืžืขืจ(ืจ.ืึทืจื’ืก.ืœืขืŸ): 0; r.headersOut['Set-Cookie'] = ืงื™ื›ืœืขืš.ืคื™ืœื˜ืขืจ(ื•ื•=>ื•ื•.ืœืขื ื’ื˜> ืœืขื ); } ืึทืจื•ื™ืกืคื™ืจืŸ ืคืขืœื™ืงื™ื™ึทื˜ {ืคื™ืœื˜ืขืจ};

ืื•ื™ืš ืฆื•ื’ืขืœื™ื™ื’ื˜ ืื™ื– ื“ื™ ngx.fetch () ืื•ืคึฟืŸ, ื•ื•ืึธืก ื™ืžืคึผืœืึทืžืึทื ืฅ ื“ื™ Fetch API, ื•ื•ืึธืก ื’ื™ื˜ ื”ื˜ื˜ืคึผ ืงืœื™ืขื ื˜ ืคืึทื ื’ืงืฉืึทื ืึทืœื™ื˜ื™. ื“ืขืจ ืื•ืคึฟืŸ ืฉื˜ื™ืฆื˜ ืคึผืจืึทืกืขืกื™ื ื’ ืคื•ืŸ ื’ื•ืฃ, ื›ืขื“ืขืจื–, ื‘ืึทืคืขืจ_ืกื™ื™ื– ืื•ืŸ ืžืึทืงืก_ืจืขืกืคึผืึธื ืกืข_ื‘ืึธื“ื™_ืกื™ื™ื– ืึธืคึผืฆื™ืขืก. ื“ื™ ืื•ืžื’ืขืงืขืจื˜ ืจืขืกืคึผืึธื ืกืข ื›ื™ื™ืคืขืฅ ืฉื˜ื™ืฆื˜ arrayBuffer (), bodyUsed, json (), ื›ืขื“ืขืจื–, ok, ืจื™ื“ืขืจืขืงื˜, ืกื˜ืึทื˜ื•ืก, statusText, text (), ื˜ื™ืคึผ ืื•ืŸ URL ืžืขื˜ื”ืึธื“ืก, ืื•ืŸ ื“ื™ ื›ืขื“ืขืจ ื›ื™ื™ืคืขืฅ ืฉื˜ื™ืฆื˜ ื‘ืึทืงื•ืžืขืŸ (), getAll () ืื•ืŸ ื”ืื˜ () ืžืขื˜ื”ืึธื“ืก . ืคึฟื•ื ืงืฆื™ืข ืคืขื˜ืฉ(ืจ) {ngx.fetch('http://nginx.org/') .then(ืขื ื˜ืคืขืจ => ืขื ื˜ืคึฟืขืจ.ื˜ืขืงืกื˜()) .ื˜ื”ืŸ(ื’ื•ืฃ => ืจ.ืจืขื˜ื•ืจืŸ(200, ื’ื•ืฃ)) .ื›ืึทืคึผืŸ (E => r.return(501, e.message)); }

ืื™ืจ ืงืขื ื˜ ืื•ื™ืš ืฆื™ื™ื›ืขื ืขืŸ ื“ื™ ืคื•ื‘ืœื™ืงืืฆื™ืข ืกืขืจื•ื•ื™ืจืขืจ NGINX ื™ื•ื ื™ื˜ 1.22, ื ืœื™ื™ื–ื•ื ื’ ืคืืจืŸ ืœื•ื™ืคืŸ ื•ื•ืขื‘ ืืคืœื™ืงืืฆื™ืขืก ื’ืขืฉืจื™ื‘ืŸ ืื™ืŸ ืคืืจืฉื™ื“ืขื ืข ืคืจืื’ืจืืžื™ืจืŸ ืฉืคืจืื›ืŸ (Python, PHP, Perl, Ruby, Go, JavaScript/Node.js, ืื•ืŸ Java). NGINX ื™ื•ื ื™ื˜ ืงืขืŸ ื’ืœื™ื™ื›ืฆื™ื™ื˜ื™ื’ ืœื•ื™ืคืŸ ืงื™ื™ืคืœ ืืคืœื™ืงืืฆื™ืขืก ื’ืขืฉืจื™ื‘ืŸ ืื™ืŸ ืคืืจืฉื™ื“ืขื ืข ืฉืคืจืื›ืŸ, ืื•ืŸ ื–ื™ื™ืขืจืข ืœืื ื˜ืฉ ืคืืจืืžืขื˜ืขืจืก ืงืขื ืขืŸ ื•ื•ืขืจืŸ ื’ืขื˜ื•ื™ืฉื˜ ื“ื™ื ืืžื™ืฉ ืืŸ ื“ื™ ื ื•ื™ื˜ื•ื•ืขื ื“ื™ืงื™ื™ื˜ ืฆื• ืจืขื“ืืงื˜ื™ืจืŸ ืงืื ืคื™ื’ื•ืจืืฆื™ืข ื˜ืขืงืขืก ืื“ืขืจ ืจื™ืกื˜ืืจื˜ืŸ. ื“ืขืจ ืงืื•ื“ ืื™ื– ื’ืขืฉืจื™ื‘ืŸ ืื™ืŸ C ืื•ืŸ ืื™ื– ืœื™ืฆืขื ืฆื™ืจื˜ ืื•ื ื˜ืขืจ ื“ืขืจ Apache 2.0 ืœื™ืฆืขื ืฅ.

ื“ื™ ื ื™ื™ืข NGINX ื™ื•ื ื™ื˜ ืื•ื™ืกื’ืื‘ืข ื”ืื˜ ื–ื™ืš ืคืืงื•ืกื™ืจื˜ ืื•ื™ืฃ ืคืืจื‘ืขืกืขืจืŸ ืกื˜ืื‘ื™ืœื™ื˜ืขื˜, ืื•ื™ืกื‘ืจื™ื™ื˜ืขืจืŸ ื˜ืขืกื˜ ืžืขื’ืœืขื›ืงื™ื™ื˜ืŸ, ืื•ืŸ ืคืืจืจืขื›ื˜ืŸ ื‘ืึทื’ื–. Linux ื“ืขืจ ื‘ืึทื ื™ืฆืขืจ ืื•ืŸ ื’ืจื•ืคึผืข ืื•ื ื˜ืขืจ ื•ื•ืขืœื›ืข NGINX Unit ืœื•ื™ืคื˜ ืื™ืŸ ืคึผืึทืงืึทื“ื–ืฉืึทื– ื–ืขื ืขืŸ ื’ืขื‘ื™ื˜ืŸ ื’ืขื•ื•ืึธืจืŸ. ืึทื ืฉื˜ืึธื˜ nobody:nobody, ืœื•ื™ืคืŸ ืคึผืจืึธืฆืขืกืŸ ืื™ืฆื˜ ืื•ื ื˜ืขืจ ืึท ื‘ืึทื–ื•ื ื“ืขืจืŸ ื‘ืึทื ื™ืฆืขืจ ืžื™ื˜ืŸ ื ืึธืžืขืŸ unit ืื™ืŸ ื“ืขืจ unit ื’ืจื•ืคึผืข. ืงืึธืžืคึผืึทื˜ื™ื‘ื™ืœืึทื˜ื™ ืžื™ื˜ ื“ื™ Stream API ืคึฟืึทืจ ServerRequest ืื•ืŸ ServerResponse ืึธื‘ื™ืขืงื˜ืŸ ืคึฟื•ืŸ ื“ืขื Node.js ืžืึธื“ื•ืœ ืื™ื– ื’ืขื–ืึธืจื’ื˜ ื’ืขื•ื•ืึธืจืŸ. ืงื™ื™ืคืœ ื“ื™ืจืขืงื˜ืึธืจื™ืขืก ืงืขื ืขืŸ ืื™ืฆื˜ ืกืคึผืขืฆื™ืคึฟื™ืฆื™ืจื˜ ื•ื•ืขืจืŸ ืื™ืŸ ื“ืขืจ "path" ืึธืคึผืฆื™ืข ืคึฟืึทืจ ืคึผื™ื˜ื”ืึธืŸ ืึทืคึผืœื™ืงืึทืฆื™ืขืก.

ืžืงื•ืจ: opennet.ru

ืงื•ื™ืคืŸ ืคืึทืจืœืึธื–ืœืขืš ื”ืึธืกื˜ื™ื ื’ ืคึฟืึทืจ ื–ื™ื™ื˜ืœืขืš ืžื™ื˜ DDoS ืฉื•ืฅ, VPS VDS ืกืขืจื•ื•ืขืจืก ๐Ÿ”ฅ ืงื•ื™ืคื˜ ืคืึทืจืœืขืกืœืขื›ืข ื•ื•ืขื‘ื–ื™ื™ื˜ืœ ื”ืึธืกื˜ื™ื ื’ ืžื™ื˜ DDoS ืฉื•ืฅ, VPS VDS ืกืขืจื•ื•ืขืจืก | ProHoster