เบเบฒเบ™เบ›เปˆเบญเบ nginx 1.17.1 เปเบฅเบฐ njs 0.3.3

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

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

  • เป€เบžเบตเปˆเบกเบ„เปเบฒเบชเบฑเปˆเบ‡ limit_req_dry_run, เป€เบŠเบดเปˆเบ‡เป€เบ›เบตเบ”เปƒเบŠเป‰เบฎเบนเบšเปเบšเบšเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ—เบปเบ”เบฅเบญเบ‡, เปƒเบ™เบ—เบตเปˆเบšเปเปˆเบกเบตเบ‚เปเป‰เบˆเปเบฒเบเบฑเบ”เบ—เบตเปˆเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เบ„เบงเบฒเบกเป€เบ‚เบฑเป‰เบกเบ‚เบปเป‰เบ™เบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เป (เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบญเบฑเบ”เบ•เบฒ), เปเบ•เปˆเบชเบทเบšเบ•เปเปˆเบ„เปเบฒเบ™เบถเบ‡เป€เบ–เบดเบ‡เบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเป€เบเบตเบ™เบ‚เบญเบšเป€เบ‚เบ”เบˆเปเบฒเบเบฑเบ”เปƒเบ™เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบ—เบตเปˆเปƒเบŠเป‰เบฎเปˆเบงเบกเบเบฑเบ™;
  • เป€เบกเบทเปˆเบญเปƒเบŠเป‰เบ„เปเบฒเบชเบฑเปˆเบ‡ "upstream" เปƒเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ "upstream" เบ•เบฑเบ™hashยป เป€เบžเบทเปˆเบญเบˆเบฑเบ”เบฅเบฝเบ‡เบเบฒเบ™เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เบเบฒเบ™เป‚เบซเบผเบ”เบ”เป‰เบงเบเบเบฒเบ™เบœเบนเบเบกเบฑเบ”เบฅเบนเบเบ„เป‰เบฒ-เป€เบŠเบตเบšเป€เบงเบต, เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบฅเบฐเบšเบธเบ„เปˆเบฒเบเบฐเปเบˆเบซเบงเปˆเบฒเบ‡เป€เบ›เบปเปˆเบฒ, เป‚เปเบ”เบเบฒเบ™เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เปเบšเบšเป€เบญเบเบฐเบžเบฒเบš (เบฎเบญเบš-เป‚เบฃเบšเบดเบ™) เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เปเบฅเป‰เบง;
  • เปเบเป‰เป„เบ‚เบ„เบงเบฒเบกเบฅเบปเป‰เบกเป€เบซเบผเบงเบ‚เบญเบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเปƒเบŠเป‰ cache เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบเบฑเบšเบ„เปเบฒเบชเบฑเปˆเบ‡ "image_filter" เปเบฅเบฐเบ›เปˆเบฝเบ™เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ•เบปเบงเบˆเบฑเบ”เบเบฒเบ™เบฅเบฐเบซเบฑเบ”เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ” 415 เป‚เบ”เบเปƒเบŠเป‰เบ„เปเบฒเบชเบฑเปˆเบ‡ "error_page";
  • เปเบเป‰เป„เบ‚เบเบฒเบ™เบ‚เบฑเบ”เบ‚เป‰เบญเบ‡เบ‚เบญเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ—เบตเปˆเป€เบเบตเบ”เบ‚เบทเป‰เบ™เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเปƒเบŠเป‰เบ•เบปเบงเปเบ›เบžเบฒเบชเบฒ Perl เปƒเบ™เบ•เบปเบง.

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

เบเบฒเบ™เบ›เปˆเบญเบเปƒเบซเบกเปˆเบ‚เบญเบ‡ njs เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ—เบตเปˆเบ–เบทเบเบเปเบฒเบ™เบปเบ”เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš fuzzing. เบ›เบฐเบ•เบดเบšเบฑเบ” "เบ‚เบฐเบšเบงเบ™เบเบฒเบ™" เบ•เบปเบงเปเบ›เบ—เบปเปˆเบงเป‚เบฅเบเบ—เบตเปˆเบกเบตเบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเปเบฅเบฐเบ•เบปเบงเปเบ›เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ‚เบญเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™ (process.pid, process.env.HOME, เปเบฅเบฐเบญเบทเปˆเบ™เป†). เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ” เปเบฅเบฐเบงเบดเบ—เบตเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ—เบฑเบ‡เปเบปเบ”เบชเบฒเบกเบฒเบ”เบ‚เบฝเบ™เปƒเบชเปˆเป„เบ”เป‰. เป€เบžเบตเปˆเบกเบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบ•เบดเบšเบฑเบ” Array.prototype.fill(). เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ syntax เบ—เบตเปˆเบชเบฐเป€เบซเบ™เบตเปƒเบ™ ECMAScript 5 เป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ” เบฅเบงเบ”เบฅเบฒเบ ะธ เบŠเบธเบ”เบ•เบฑเป‰เบ‡ เป€เบžเบทเปˆเบญเบœเบนเบเบกเบฑเบ”เบŠเบฑเบšเบชเบดเบ™เบงเบฑเบ”เบ–เบธเบเบฑเบšเบŸเบฑเบ‡เบŠเบฑเบ™, เบ•เบปเบงเบขเปˆเบฒเบ‡:

var o = {a:2};
Object.defineProperty(o, 'b', {get:function(){return 2*this.a}});

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

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