Π˜Π·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Pingora 0.7, Ρ€Π°ΠΌΠΊΠ° Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ услуги.

Компания Cloudflare пусна вСрсия 0.7 Π½Π° Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° Pingora, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° Π·Π°Ρ‰ΠΈΡ‚Π΅Π½ΠΈ ΠΈ високопроизводитСлни ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ услуги Π½Π° Π΅Π·ΠΈΠΊΠ° Rust. ΠŸΡ€ΠΎΠΊΡΠΈ създадСни с Pingora Π²Π΅Ρ‡Π΅ ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΡ‚ Π΄Π²Π΅ Π³ΠΎΠ΄ΠΈΠ½ΠΈ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π² ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° Π·Π° доставка Π½Π° ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅ Π½Π° Cloudflare вмСсто nginx ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°Ρ‚ Π½Π°Π΄ 40 ΠΌΠΈΠ»ΠΈΠΎΠ½Π° заявки Π² сСкунда. ΠšΠΎΠ΄ΡŠΡ‚ Π΅ написан Π½Π° Π΅Π·ΠΈΠΊΠ° Rust ΠΈ Π΅ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½ ΠΏΠΎΠ΄ лицСнзия Apache 2.0.

Основни Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ Π½Π° Pingora:

  • ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° HTTP/1 ΠΈ HTTP/2 (Π² ΠΏΠ»Π°Π½ΠΎΠ²Π΅Ρ‚Π΅ Π΅ добавянСто Π½Π° HTTP/3), ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° услуги, ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ свои собствСни ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΈ ΠΈΠ»ΠΈ UDP/TCP.
  • ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° заявки Π² асинхронСн Ρ€Π΅ΠΆΠΈΠΌ.
  • Π’ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠ²Π°Π½Π΅ Π½Π° callback ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ ΠΈ Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈ, позволяващи ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π΅Ρ‚Π°ΠΏΠΈ Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° заявкитС, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½Π΅, прСнасочванС, Π±Π»ΠΎΠΊΠΈΡ€Π°Π½Π΅ ΠΈ Π»ΠΎΠ³Π²Π°Π½Π΅ Π½Π° заявки ΠΈ ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ΠΈ.
  • ΠŸΡ€ΠΎΠΊΡΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° gRPC ΠΈ WebSocket.
  • ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΠΈ балансировчици Π½Π° Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ.
  • Π’ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° промяна Π½Π° конфигурацията Π±Π΅Π· рСстартиранС.
  • ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° обновяванС Π½Π° ΠΊΠΎΠ΄Π° Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π±Π΅Π· Ρ€Π°Π·ΠΊΡŠΡΠ²Π°Π½Π΅ Π½Π° ΡΡŠΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡΡ‚Π°.
  • БрСдства Π·Π° ΠΏΡ€Π΅Π²ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅ Π½Π° Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ Π² случай Π½Π° ΠΏΡ€ΠΎΠ²Π°Π» (failover).
  • Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ с Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ систСми Π·Π° ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΈ Π»ΠΎΠ³ΠΈΡ€Π°Π½Π΅ (Syslog, Prometheus, Sentry, OpenTelemetry).
  • ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° TLS ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π΅ (ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ сС OpenSSL, BoringSSL ΠΈΠ»ΠΈ Rustls).
  • Π“ΠΎΡ‚ΠΎΠ²ΠΈ Rust ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ Π·Π° създаванС Π½Π° HTTP проксита, Ρ€Π°Π±ΠΎΡ‚Π° с ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΈ, Π°Π½Π°Π»ΠΈΠ· Π½Π° HTTP заглавия, прослСдяванС ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π°Π²Π°Π½Π΅ Π½Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°, балансировка Π½Π° Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ, Ρ€Π°Π±ΠΎΡ‚Π° с Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° Ρ…Π΅Ρˆ-Ρ‚Π°Π±Π»ΠΈΡ†Π° Ketama, ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Π½Π΅ Π½Π° кСш Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½Π°Ρ‚Π° ΠΏΠ°ΠΌΠ΅Ρ‚ ΠΈ асинхронно ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°Π½Π΅ Π½Π° Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚ΠΈ.

Π‘Ρ€Π΅Π΄ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π² Π½ΠΎΠ²Π°Ρ‚Π° вСрсия:

  • Π’ структурата SslDigest Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΎ ΠΏΠΎΠ»Π΅ β€žextensionβ€œ, Π° Π·Π° Ρ‚ΠΈΠΏΠ°ΠΆΠ° TlsAccept Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ handshake_complete_callback, позволяващ прикрСпянС Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ Π΄Π°Π½Π½ΠΈ, спСцифични Π·Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, към TLS-ΡΡŠΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ. ΠšΠ°Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ ΠΊΠ°ΠΊ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Ρ‚Π°Π·ΠΈ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° създаванС ΡΡŠΡ€Π²ΡŠΡ€, ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π° информация ΠΎΡ‚ клиСнтския сСртификат ΠΈ я Π²Ρ€ΡŠΡ‰Π° Π² HTTP-ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€Π°.
  • Π”ΠΎΠ±Π°Π²Π΅Π½ Π΅ Ρ‚ΠΈΠΏΠ°ΠΆ ConnectionFilter Π·Π° Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° TCP-съСдинСния Π½Π° Π΅Ρ‚Π°ΠΏΠ° ΠΏΡ€Π΅Π΄ΠΈ ΡΡŠΠ³Π»Π°ΡΡƒΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅ Π½Π° TLS, ΠΊΠΎΠ΅Ρ‚ΠΎ спСстява рСсурси, ΠΊΠ°Ρ‚ΠΎ сбрасыва ΡΡŠΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡΡ‚Π° Π½Π° Ρ€Π°Π½Π΅Π½ Π΅Ρ‚Π°ΠΏ.
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½ΠΈ ΠΏΠΎΡ‚ΠΎΡ†ΠΈ Π½Π° транспортно Π½ΠΈΠ²ΠΎ (Virtual L4 Streams), позволяващи ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° собствСни Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΈ Π² pingora-proxy.
  • Π Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π° Π΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΎΠΏΡ†ΠΈΠΈ verify_cert ΠΈ verify_hostname Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ с rustls.
  • Π—Π° външни crate-ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ структурата HttpProxy Π·Π° прСопрСдСлянС Π½Π° Π»ΠΎΠ³ΠΈΠΊΠ°Ρ‚Π° Π½Π° проксиранСто Π½Π° заявки.
  • Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ Π΅ ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ„ΠΎΠ½ΠΎΠ²ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ Π½Π° подзаявки ΠΎΡ‚ основния ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π½Π° сСсията.
  • ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π΅Π½Π° Π΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° прослСдяванС Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° Ρ‚Π΅Π»Π°Ρ‚Π° Π½Π° HTTP1 ΠΈ HTTP2 заявки, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ Π·Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° проксито.
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° създаванС Π½Π° собствСни сСсии Π·Π° инкапсулиран HTTP-Ρ‚Ρ€Π°Ρ„ΠΈΠΊ.
  • ΠŸΠΎΡΡ‚Π°Π²Π΅Π½ΠΈ са ограничСния Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° вСрсии Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° lru (0.16.3 ΠΈΠ»ΠΈ ΠΏΠΎ-Π½ΠΎΠ²ΠΈ) ΠΏΠΎΡ€Π°Π΄ΠΈ уязвимост Π² рСализацията Π½Π° ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° IterMut, която Π²ΠΎΠ΄ΠΈ Π΄ΠΎ Π°Π²Π°Ρ€ΠΈΠΉΠ½ΠΎ Π·Π°Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π·Π°Ρ€Π°Π΄ΠΈ ΠΏΡ€ΠΎΠ²Π΅ΠΆΠ΄Π°Ρ‰Π°Ρ‚Π° сС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° заимстванСто Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡ‚Π΅ (borrow checker).

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

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster