Выпуск nginx 1.17.1 ΠΈ njs 0.3.3

ДоступСн выпуск основной Π²Π΅Ρ‚ΠΊΠΈ nginx 1.17.1, Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ продолТаСтся Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ Π½ΠΎΠ²Ρ‹Ρ… возмоТностСй (Π² ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠΉ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠ΅ 1.16 вносятся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ измСнСния, связанныС с устранСниСм ΡΠ΅Ρ€ΡŒΡ‘Π·Π½Ρ‹Ρ… ошибок ΠΈ уязвимостСй.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ измСнСния:

  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° limit_req_dry_run, которая Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ€Π΅ΠΆΠΈΠΌ ΠΏΡ€ΠΎΠ±Π½ΠΎΠ³ΠΎ запуска, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π½Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ограничСния Π½Π° ΠΈΠ½Ρ‚Π΅Π½ΡΠΈΠ²Π½ΠΎΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ запросов (Π±Π΅Π· rate limit), Π½ΠΎ продолТаСтся ΡƒΡ‡Ρ‘Ρ‚ выходящСго Π·Π° Π»ΠΈΠΌΠΈΡ‚Ρ‹ числа запросов Π² раздСляСмой памяти;
  • ΠŸΡ€ΠΈ использовании Π² Π±Π»ΠΎΠΊΠ΅ настроСк «upstream» Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ «hash» для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ балансировки Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ с привязкой ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΊ сСрвСру, Π² случаС указания пустого значСния ΠΊΠ»ΡŽΡ‡Π° Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ активируСтся Ρ€Π΅ΠΆΠΈΠΌ Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠΉ балансировки (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 ΠΈ setter для привязки свойства ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

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

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ