НовыС вСрсии nginx 1.27.5, Ρ„ΠΎΡ€ΠΊΠ° FreeNginx 1.27.6 ΠΈ JavaScript-модуля njs 0.8.10

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ выпуск основной Π²Π΅Ρ‚ΠΊΠΈ nginx 1.27.5, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ продолТаСтся Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ Π½ΠΎΠ²Ρ‹Ρ… возмоТностСй. Π’ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡƒΡŽ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ 1.26.x вносятся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ измСнСния, связанныС с устранСниСм ΡΠ΅Ρ€ΡŒΡ‘Π·Π½Ρ‹Ρ… ошибок ΠΈ уязвимостСй. Π’ дальнСйшСм Π½Π° Π±Π°Π·Π΅ основной Π²Π΅Ρ‚ΠΊΠΈ 1.27.x Π±ΡƒΠ΄Π΅Ρ‚ сформирована ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Π°Ρ Π²Π΅Ρ‚ΠΊΠ° 1.28. Код ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° написан Π½Π° языкС Π‘ΠΈ ΠΈ распространяСтся ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ BSD.

Π‘Ρ€Π΅Π΄ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² nginx 1.27.5:

  • Для соСдинСний, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» QUIC, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° управлСния сСтСвой ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ CUBIC (RFC 9438), Ρ€Π°Π±ΠΎΡ‚Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ сводится ΠΊ постСпСнному ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΡŽ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΎΠΊΠ½Π° ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠΈ Π΄ΠΎ появлСния ΠΏΠΎΡ‚Π΅Ρ€ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², послС Ρ‡Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΎΠΊΠ½Π° откатываСтся Π½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΄ΠΎ Π½Π°Ρ‡Π°Π»Π° ΠΏΠΎΡ‚Π΅Ρ€ΠΈ. Π’ ΠΏΡ€ΠΎΠ²Π΅Π΄Ρ‘Π½Π½Ρ‹Ρ… тСстах использованиС CUBIC ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ врСмя ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Ρ„Π°ΠΉΠ»Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 500ΠœΠ‘ Π½Π° 24% ΠΏΡ€ΠΈ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ°Ρ… 40ms ΠΈ BDP 750K (Bandwidth Delay Product) ΠΈ Π½Π° 73% ΠΏΡ€ΠΈ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ°Ρ… 100ms ΠΈ BDP 9M.
  • ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΡΡˆΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… Π² раздСляСмой памяти сСансов SSL ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ Π΄ΠΎ 8192.
  • НалаТСна сборка с Π‘ΠΈ-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ Musl.
  • ΠŸΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ ΡƒΡΡ‚Ρ€Π°Π½Π΅Π½ΠΈΡŽ ошибок Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ HTTP/3.
  • Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½Ρ‹ ошибки Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ² Β«grpc_ssl_password_fileΒ», Β«proxy_ssl_password_fileΒ» ΠΈ Β«uwsgi_ssl_password_fileΒ», ΠΏΡ€ΠΎΡΠ²Π»ΡΠ²ΡˆΠΈΠ΅ΡΡ ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ SSL-сСртификатов ΠΈ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ· ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….
  • УстранСны ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с выставлСниСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… $ssl_curve ΠΈ $ssl_curves ΠΏΡ€ΠΈ использовании ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹Ρ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ эллиптичСских ΠΊΡ€ΠΈΠ²Ρ‹Ρ… Π² OpenSSL.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΡŽ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… вСрсий ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° FreeNginx 1.27.5 ΠΈ 1.27.6, Ρ€Π°Π·Π²ΠΈΠ²Π°ΡŽΡ‰Π΅Π³ΠΎ Ρ„ΠΎΡ€ΠΊ Nginx. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Ρ„ΠΎΡ€ΠΊΠ° Π²Π΅Π΄Ρ‘Ρ‚ Максим Π”ΡƒΠ½ΠΈΠ½, ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Nginx. FreeNginx позиционируСтся ΠΊΠ°ΠΊ нСкоммСрчСский ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Ρ‹ Nginx Π±Π΅Π· ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ Π²ΠΌΠ΅ΡˆΠ°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π°.

ИзмСнСния во FreeNginx 1.27.5 и 1.27.6:

  • Π Π΅ΡˆΠ΅Π½Ρ‹ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΏΡ€ΠΈ использовании OpenSSL 3.5 (Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… $ssl_curve ΠΈ $ssl_curves Π½Π΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π»ΠΎΡΡŒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π³Ρ€ΡƒΠΏΠΏΡ‹ X25519MLKEM768).
  • УстранСно Π°Π²Π°Ρ€ΠΈΠΉΠ½ΠΎΠ΅ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ процСсса Π² конфигурациях с Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²ΠΎΠΉ proxy_ssl_password_file, ΠΏΡ€ΠΎΡΠ²Π»ΡΡŽΡ‰Π΅Π΅ΡΡ ΠΏΡ€ΠΈ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°Ρ… proxy_ssl_certificate ΠΈ proxy_ssl_certificate_key.
  • Π’ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ listen Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° multipath.
  • Π—Π°ΠΏΡ€Π΅Ρ‰Π΅Π½ΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ использованиС SSL-сСансов ΠΌΠ΅ΠΆΠ΄Ρƒ сСрвСрами, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΌΠΈ Ρ€Π°Π·Π½Ρ‹Π΅ сСртификаты Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π΅ ssl_trusted_certificate, ΠΏΡ€ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ клиСнтских SSL-сСртификатов.
  • РСшСна ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹ΠΌ использованиСм сСансов Π² контСкстС Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ сСрвСра ΠΏΡ€ΠΈ использовании TLSv1.3 с OpenSSL 1.1.1e+.
  • РСшСна ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΡ€ΠΈ использовании zlib-ng.

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

ИзмСнСния в njs 0.8.10:

  • Π’ JavaScript-Π΄Π²ΠΈΠΆΠΎΠΊ QuickJS Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° API WebCrypto, TextEncoder ΠΈ TextDecoder.
  • Π’ Π΄Π²ΠΈΠΆΠΎΠΊ QuickJS Π”ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π½ΠΎΠ²Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ querystring, crypto ΠΈ xml.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ QuickJS-NG.
  • Π’ ΠΌΠΎΠ΄ΡƒΠ»Π΅ ΠΊ nginx Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ содСрТимого r.requestText ΠΈ r.requestBuffer ΠΈΠ· Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°.

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

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