Выпуск nginx 1.17.9 ΠΈ njs 0.3.9

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

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

  • Π—Π°ΠΏΡ€Π΅Ρ‰Π΅Π½ΠΎ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… строк «Host» Π²
    Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ запроса;

  • Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½Π° ошибка ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ nginx ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π» Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ строки
    «Transfer-Encoding» Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ запроса;

  • ВнСсСны исправлСния, ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΠ΅ ΡƒΡ‚Π΅Ρ‡ΠΊΠΈ сокСтов ΠΏΡ€ΠΈ использовании ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° HTTP/2;
  • Устранён ΠΊΡ€Π°Ρ… (segmentation fault) Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ процСсса, ΠΏΡ€ΠΎΡΠ²Π»ΡΡŽΡ‰ΠΈΠΉΡΡ ΠΏΡ€ΠΈ использовании OCSP stapling;
  • ВнСсСны исправлСния Π² ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ngx_http_mp4_module;
  • РСшСна ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² случаях, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ ошибок с ΠΊΠΎΠ΄ΠΎΠΌ 494 с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ ‘error_page’ ΠΌΠΎΠ³ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΎΡ‚Π²Π΅Ρ‚ с ΠΊΠΎΠ΄ΠΎΠΌ 494 вмСсто 400;
  • УстранСны ΡƒΡ‚Π΅Ρ‡ΠΊΠΈ сокСтов ΠΏΡ€ΠΈ использовании подзапросов Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ njs ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ aio.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ выпуск njs 0.3.9, ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° языка JavaScript для Π²Π΅Π±-сСрвСра nginx. Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ njs Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ стандарты ECMAScript ΠΈ позволяСт Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒ возмоТности nginx ΠΏΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ запросов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ скриптов Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ. Π‘ΠΊΡ€ΠΈΠΏΡ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² Ρ„Π°ΠΉΠ»Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ для опрСдСлСния Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ запросов, формирования ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, динамичСской Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΎΡ‚Π²Π΅Ρ‚Π°, ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ запроса/ΠΎΡ‚Π²Π΅Ρ‚Π° ΠΈΠ»ΠΈ быстрого создания Π·Π°Π³Π»ΡƒΡˆΠ΅ΠΊ с Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π² web-прилоТСниях.

Π’ Π½ΠΎΠ²ΠΎΠΌ выпускС Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ njs ​​Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ€Π΅ΠΆΠΈΠΌΠ° ΠΎΡ‚ΠΊΡ€Π΅ΠΏΠ»Π΅Π½Π½Ρ‹Ρ… запросов Π² r.subrequest(). ΠžΡ‚Π²Π΅Ρ‚Ρ‹ Π½Π° ΠΎΡ‚ΠΊΡ€Π΅ΠΏΠ»Π΅Π½Π½Ρ‹Π΅ подзапросы ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… подзапросов, ΠΎΡ‚ΠΊΡ€Π΅ΠΏΠ»Π΅Π½Π½Ρ‹ΠΉ подзапрос ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ создан Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Π’Π°ΠΊΠΆΠ΅:

  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ API Promises для модуля «fs»;
  • Π’ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ «fs» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ access(), symlink(), unlink(),
    realpath() ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅;

  • Π’Π²Π΅Π΄Π΅Π½Ρ‹ эффСктивныС с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния потрСблСния памяти ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ массивы;
  • ВнСсСны ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ Π² lexer;
  • ВнСсСно исправлСниС Π² сопоставлСниС Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹Ρ… трассировках (backtraces).
    слСдах;

  • Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½Ρ‹ callback-Π²Ρ‹Π·ΠΎΠ²Ρ‹ Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ «fs»;
  • ВнСсСны исправлСния Π² Object.getOwnPropertySymbols();
  • УстранСно ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π±ΡƒΡ„Π΅Ρ€Π° динамичСской памяти Π² njs_json_append_string();
  • ВнСсСно исправлСниС Π² encodeURI() ΠΈ decodeURI() Π² соотвСтствии со спСцификациСй;
  • ВнСсСно исправлСниС Π² Number.prototype.toPrecision();
  • ВнСсСно исправлСниС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΏΡ€ΠΎΠ±Π΅Π»Π° Π² JSON.stringify();
  • ВнСсСно исправлСниС Π² JSON.stringify() с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Number() ΠΈ String();
  • ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΎ экранированиС символов Unicode Π² JSON.stringify() Π² соотвСтствии
    со спСцификациСй;

  • ВнСсСно исправлСниС Π² ΠΈΠΌΠΏΠΎΡ€Ρ‚ Π½Π΅ Ρ€ΠΎΠ΄Π½Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ;
  • ВнСсСно исправлСниС Π² njs.dump() с экзСмпляром Date() Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅.

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