Выпуск nginx 1.17.1 і njs 0.3.3

даступны выпуск асноўнай галінкі Nginx 1.17.1, у рамках якой працягваецца развіццё новых магчымасцяў (у паралельна падтрымліваецца стабільнай галінцы 1.16 уносяцца толькі змены, злучаныя з ухіленнем сур'ёзных памылак і ўразлівасцяў.

Асноўныя змены:

  • Дададзена дырэктыва limit_req_dry_run, якая актывуе рэжым выпрабавальнага запуску, у якім не прымяняюцца абмежаванні на інтэнсіўнасць апрацоўкі запытаў (без rate limit), але працягваецца ўлік які выходзіць за ліміты колькасці запытаў у падзялянай памяці;
  • Пры выкарыстанні ў блоку налад «upstream» дырэктывы «мешаніна»для арганізацыі балансавання нагрузкі з прывязкай кліента да сервера, у выпадку ўказання пустога значэння ключа зараз актывуецца рэжым раўнамернага балансавання (round-robin);
  • Ухілены крах працоўнага працэсу пры выкарыстанні кэша ў спалучэнні з дырэктывай «image_filter» і перанакіраваннем апрацоўніка кода памылкі 415 з выкарыстаннем дырэктывы «error_page»;
  • Ухілены крах працоўнага працэсу, які выяўляецца пры выкарыстанні ўбудаванага інтэрпрэтатара Perl.

Дадаткова можна адзначыць выпуск njs 0.3.3, інтэрпрэтатара мовы JavaScript для вэб-сервера nginx. Інтэрпрэтатар njs рэалізуе стандарты ECMAScript і дазваляе пашыраць магчымасці nginx па апрацоўцы запытаў з дапамогай скрыптоў у канфігурацыі. Скрыпты могуць выкарыстоўвацца ў файле канфігурацыі для вызначэння пашыранай логікі апрацоўкі запытаў, фармаванні канфігурацыі, дынамічнай генерацыі адказу, мадыфікацыі запыту/адказу ці хуткага стварэння заглушак з рашэннем праблем у web-прыкладаннях.

У новым выпуску njs ухіленыя праблемы, выяўленыя падчас fuzzing-тэставанні. Рэалізаваная глабальная пераменная "process" c параметрамі і зменнымі асяроддзі бягучага працэсу (process.pid, process.env.HOME і да т.п.). Забяспечана магчымасць запісу ва ўсе ўбудаваныя ўласцівасці і метад. Дададзена рэалізацыя Array.prototype.fill(). Рэалізавана падтрымка прапанаванага ў ECMAScript 5 сінтаксісу getter и сетэр для прывязкі ўласцівасці аб'екта да функцыі, напрыклад:

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

Крыніца: opennet.ru

Дадаць каментар