เบเบฒเบ™เบ›เปˆเบญเบ nginx 1.17.9 เปเบฅเบฐ njs 0.3.9

เบชเป‰เบฒเบ‡เบ•เบฑเป‰เบ‡เบ‚เบถเป‰เบ™ เบเบฒเบ™เบ›เปˆเบญเบเบ™เป‰เปเบฒ nginx 1.17.9, เบžเบฒเบเปƒเบ™เบ—เบตเปˆเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบซเบกเปˆเบเบฑเบ‡เบชเบทเบšเบ•เปเปˆ (เปƒเบ™เบ‚เบฐเบซเบ™เบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบ—เบตเปˆเบซเบกเบฑเป‰เบ™เบ„เบปเบ‡ เบชเบฒเบ‚เบฒ 1.16 เบกเบตเบžเบฝเบ‡เปเบ•เปˆเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เบฅเบปเบšเบฅเป‰เบฒเบ‡เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เปเบฅเบฐเบ„เบงเบฒเบกเบชเปˆเบฝเบ‡เบ—เบตเปˆเบฎเป‰เบฒเบเปเบฎเบ‡เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™).

เบ•เบปเป‰เบ™โ€‹เบ•เป เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡:

  • เบกเบฑเบ™เบ–เบทเบเบซเป‰เบฒเบกเบšเปเปˆเปƒเบซเป‰เบฅเบฐเบšเบธเบชเบฒเบ "เป€เบˆเบปเป‰เบฒเบžเบฒเบš" เบซเบผเบฒเบเบชเบฒเบเปƒเบ™
    เบซเบปเบงเบ‚เปเป‰เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เป;

  • เปเบเป‰เป„เบ‚เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เบ—เบตเปˆ nginx เบšเปเปˆเบชเบปเบ™เปƒเบˆเบชเบฒเบเป€เบžเบตเปˆเบกเป€เบ•เบตเบก
    "เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบเบฒเบ™เป‚เบญเบ™" เปƒเบ™เบชเปˆเบงเบ™เบซเบปเบงเบ„เบณเบฎเป‰เบญเบ‡เบ‚เป;

  • เบเบฒเบ™เปเบเป‰เป„เบ‚เป„เบ”เป‰เบ–เบทเบเป€เบฎเบฑเบ”เป€เบžเบทเปˆเบญเบ›เป‰เบญเบ‡เบเบฑเบ™เบเบฒเบ™เบฎเบปเปˆเบงเป„เบซเบผเบ‚เบญเบ‡เป€เบ•เบปเป‰เบฒเบชเบฝเบšเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเปƒเบŠเป‰ HTTP/2 protocol;
  • เปเบเป‰เป„เบ‚เบ„เบงเบฒเบกเบœเบดเบ”เบ‚เบญเบ‡เบเบฒเบ™เปเบšเปˆเบ‡เบชเปˆเบงเบ™เปƒเบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบœเบนเป‰เบญเบญเบเปเบฎเบ‡เบ‡เบฒเบ™เบ—เบตเปˆเป€เบเบตเบ”เบ‚เบทเป‰เบ™เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ™เปเบฒเปƒเบŠเป‰ OCSP stapling;
  • เบเบฒเบ™เปเบเป‰เป„เบ‚เป„เบ”เป‰เบ–เบทเบเป€เบฎเบฑเบ”เบเบฑเบšเป‚เบกเบ”เบนเบ™ ngx_http_mp4_module;
  • เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเปƒเบ™เบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบเบฒเบ™เบ›เปˆเบฝเบ™เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เบเบฑเบšเบฅเบฐเบซเบฑเบ” 494 เป‚เบ”เบเปƒเบŠเป‰เบ„เปเบฒเบชเบฑเปˆเบ‡ 'error_page', เบ„เปเบฒเบ•เบญเบšเบ—เบตเปˆเบกเบตเบฅเบฐเบซเบฑเบ” 494 เบชเบฒเบกเบฒเบ”เบ–เบทเบเบชเบปเปˆเบ‡เบ„เบทเบ™เปเบ—เบ™ 400;
  • เบเบฒเบ™เปเบเป‰เป„เบ‚เป€เบ•เบปเป‰เบฒเบฎเบฑเบšเบเบฒเบ™เบฎเบปเปˆเบงเป„เบซเบฅเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเปƒเบŠเป‰ subqueries เปƒเบ™เป‚เบกเบ”เบนเบ™ njs เปเบฅเบฐเบ„เปเบฒเบชเบฑเปˆเบ‡ aio.

เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบกเบฑเบ™เบชเบฒเบกเบฒเบ”เบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เป„เบ”เป‰ เบ›เปˆเบญเบเบ•เบปเบง njs 0.3.9, เบ™เบฒเบเบžเบฒเบชเบฒ JavaScript เบชเปเบฒเบฅเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเป€เบงเบฑเบšเป„เบŠเบ•เปŒ nginx. เบ™เบฒเบเบžเบฒเบชเบฒ njs เบ›เบฐเบ•เบดเบšเบฑเบ”เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ ECMAScript เปเบฅเบฐเบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ‚เบฐเบซเบเบฒเบเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เบ‚เบญเบ‡ nginx เปƒเบ™เบเบฒเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเป‚เบ”เบเปƒเบŠเป‰ scripts เปƒเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ. Scripts เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เป„เบŸเบฅเปŒเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ”เป€เบซเบ”เบœเบปเบ™เบ‚เบฑเป‰เบ™เบชเบนเบ‡เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เป, เบเบฒเบ™เบชเป‰เบฒเบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ, เบเบฒเบ™เบชเป‰เบฒเบ‡เบเบฒเบ™เบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เปเบšเบšเป„เบ”เบ™เบฒเบกเบดเบ, เปเบเป‰เป„เบ‚เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เป / เบเบฒเบ™เบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡, เบซเบผเบทเบเบฒเบ™เบชเป‰เบฒเบ‡ stubs เบขเปˆเบฒเบ‡เป„เบงเบงเบฒเป€เบžเบทเปˆเบญเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเปƒเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเป€เบงเบฑเบš.

เปƒเบ™เบเบฒเบ™เบ›เปˆเบญเบเปƒเบซเบกเปˆ, เป‚เบกเบ”เบนเบ™ njs เป„เบ”เป‰เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเบฎเบนเบšเปเบšเบšเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบ—เบตเปˆเปเบเบเบขเบนเปˆเปƒเบ™ r.subrequest(). เบเบฒเบ™เบ•เบญเบšเบเบฑเบšเบซเบฒเบเบฒเบ™เบชเบญเบšเบ–เบฒเบกเบเปˆเบญเบเบ—เบตเปˆเปเบเบเบญเบญเบเปเบกเปˆเบ™เบ–เบทเบเบฅเบฐเป€เบฅเบตเบ. เบšเปเปˆเบ„เบทเบเบฑเบšเบเบฒเบ™เบชเบญเบšเบ–เบฒเบกเบเปˆเบญเบเปเบšเบšเบ›เบปเบเบเบฐเบ•เบด, เบเบฒเบ™เบชเบญเบšเบ–เบฒเบกเบเปˆเบญเบเบ—เบตเปˆเปเบเบเบญเบญเบเบชเบฒเบกเบฒเบ”เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™เบžเบฒเบเปƒเบ™เบ•เบปเบงเบˆเบฑเบ”เบเบฒเบ™เบ—เบตเปˆเบ›เปˆเบฝเบ™เปเบ›เบ‡เป„เบ”เป‰. เบ™เบญเบเบˆเบฒเบเบ™เบตเป‰:

  • เป€เบžเบตเปˆเบกเบชเบฑเบ™เบเบฒ API เบชเปเบฒเบฅเบฑเบšเป‚เบกเบ”เบนเบ™ "fs";
  • เบŸเบฑเบ‡เบŠเบฑเบ™เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡(), symlink(), unlink(), เป„เบ”เป‰เบ–เบทเบเป€เบžเบตเปˆเบกเป€เบ‚เบปเป‰เบฒเปƒเบ™เป‚เบกเบ”เบนเบ™ "fs".
    realpath() เปเบฅเบฐเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™;

  • arrays เบ—เปเบฒเบกเบฐเบ”เบฒ, เบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบ™เปเบ‡เปˆเบ‚เบญเบ‡เบเบฒเบ™เบšเปเบฅเบดเป‚เบžเบเบ„เบงเบฒเบกเบŠเบปเบ‡เบˆเปเบฒ, เป„เบ”เป‰เบ–เบทเบเบ™เปเบฒเบชเบฐเป€เบซเบ™เบต;
  • เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เป„เบ”เป‰เบ–เบทเบเป€เบฎเบฑเบ”เปƒเบซเป‰ lexer;
  • เบเบฒเบ™เปเบเป‰เป„เบ‚เป„เบ”เป‰เบ–เบทเบเป€เบฎเบฑเบ”เบเบฑเบšเบเบฒเบ™เบชเป‰เบฒเบ‡เปเบœเบ™เบ—เบตเปˆเบ‚เบญเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆเบžเบทเป‰เบ™เป€เบกเบทเบญเบ‡เปƒเบ™ backtraces.
    เบฎเบญเบ;

  • เปเบเป‰เป„เบ‚เบเบฒเบ™เป‚เบ—เบ„เบทเบ™เปƒเบ™เป‚เบกเบ”เบนเบ™ โ€œfsโ€;
  • เบเบฒเบ™เปเบเป‰เป„เบ‚เป„เบ”เป‰เบ–เบทเบเป€เบฎเบฑเบ”เปƒเบซเป‰ Object.getOwnPropertySymbols();
  • เปเบเป‰เป„เบ‚ heap buffer overflow เปƒเบ™ njs_json_append_string();
  • เปเบเป‰เป„เบ‚ encodeURI() เปเบฅเบฐ decodeURI() เป€เบžเบทเปˆเบญเบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบกเบชเบฐเป€เบžเบฒเบฐ;
  • เป„เบ”เป‰เปเบเป‰เป„เบ‚เบเบฑเบš Number.prototype.toPrecision();
  • เบเบฒเบ™เปเบเป‰เป„เบ‚เบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบญเบฒเบเบดเบงเป€เบกเบฑเบ™เบŠเปˆเบญเบ‡เปƒเบ™ JSON.stringify();
  • เป„เบ”เป‰เปเบเป‰เป„เบ‚ JSON.stringify() เบ”เป‰เบงเบ Number() เปเบฅเบฐ String() objects;
  • เบชเบฐเบซเบ™เบญเบ‡เบเบฒเบ™เบซเบฅเบปเบšเบซเบ™เบตเบ‚เบญเบ‡เบ•เบปเบงเบญเบฑเบเบชเบญเบ™ Unicode เปƒเบ™ JSON.stringify() เบญเบตเบ‡เบ•เบฒเบก
    เบกเบตเบชเบฐเป€เบžเบฒเบฐ;

  • เบเบฒเบ™เปเบเป‰เป„เบ‚เป„เบ”เป‰เบ–เบทเบเป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เบ™เปเบฒเป€เบ‚เบปเป‰เบฒเบ‚เบญเบ‡เป‚เบกเบ”เบนเบ™เบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™เบžเบทเป‰เบ™เป€เบกเบทเบญเบ‡;
  • เป„เบ”เป‰เปเบเป‰เป„เบ‚ njs.dump() เบเบฑเบš Date() instance เปƒเบ™ container.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™