Выпуск Angie 1.6.0, российского Ρ„ΠΎΡ€ΠΊΠ° Nginx

ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ выпуск Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ HTTP-сСрвСра ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ прокси-сСрвСра Angie 1.6.0, ΠΎΡ‚Π²Π΅Ρ‚Π²Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ ΠΎΡ‚ Nginx Π³Ρ€ΡƒΠΏΠΏΠΎΠΉ Π±Ρ‹Π²ΡˆΠΈΡ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΡƒΠ²ΠΎΠ»ΠΈΠ²ΡˆΠΈΡ…ΡΡ ΠΈΠ· ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ F5 Network. Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹Π΅ тСксты Angie доступны ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ BSD. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» сСртификаты совмСстимости с российскими ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΌΠΈ систСмами Π Π΅Π΄ ОБ, Astra Linux Special Edition, Роса Π₯Ρ€ΠΎΠΌ Π‘Π΅Ρ€Π²Π΅Ρ€, ΠΠ»ΡŒΡ‚ ΠΈ ЀБВЭК-вСрсии ΠΠ»ΡŒΡ‚.

Π‘ΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ занимаСтся компания «Π’Π΅Π±-сСрвСр», образованная осСнью 2022 Π³ΠΎΠ΄Π° ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ²ΡˆΠ°Ρ инвСстиции Π² Ρ€Π°Π·ΠΌΠ΅Ρ€Π΅ 1 ΠΌΠ»Π½ Π΄ΠΎΠ»Π»Π°Ρ€ΠΎΠ². Π‘Ρ€Π΅Π΄ΠΈ ΡΠΎΠ²Π»Π°Π΄Π΅Π»ΡŒΡ†Π΅Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Π’Π΅Π±-сСрвСр: Π’Π°Π»Π΅Π½Ρ‚ΠΈΠ½ Π‘Π°Ρ€Ρ‚Π΅Π½Π΅Π² (Π»ΠΈΠ΄Π΅Ρ€ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, Ρ€Π°Π·Π²ΠΈΠ²Π°Π²ΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ Nginx Unit), Иван ΠŸΠΎΠ»ΡƒΡΠ½ΠΎΠ² (Π±Ρ‹Π²ΡˆΠΈΠΉ Ρ€ΡƒΠΊΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ фронтэнд-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Rambler ΠΈ Mail.Ru), ОлСг ΠœΠ°ΠΌΠΎΠ½Ρ‚ΠΎΠ² (Ρ€ΡƒΠΊΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Ρ‚Π΅Ρ…ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ NGINX Inc) ΠΈ Руслан Π•Ρ€ΠΌΠΈΠ»ΠΎΠ² ([email protected]).

ИзмСнСния в Angie 1.6.0:

  • Π’ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ stream Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° «sticky», ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Π±Π»ΠΎΠΊΠ΅ upstream для привязки всСх соСдинСний Π² сСансС ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ сСрвСру ΠΏΡ€ΠΈ балансировкС TCP- ΠΈ UDP-ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ².

    map $ssl_preread_server_name $route {

    a.example.com a;
    b.example.com b;
    default «»;
    }

    upstream backend {

    server 127.0.0.1:8081 sid=a;
    server 127.0.0.1:8082 sid=b;

    sticky route $route;
    }

  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° извлСчСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Cookie ΠΈΠ· соСдинСний ΠΏΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΡ‚Π»Ρƒ RDP, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ «rdp_preread» Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ stream. Cookie Π±ΡƒΠ΄ΡƒΡ‚ записаны Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ $rdp_cookie ΠΈ $rdp_cookie_NAME, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚Ρ€Π°Π·ΠΈΡ‚ΡŒ Π² Π»ΠΎΠ³Π΅ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для привязки клиСнтского сСанса RDP ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ сСрвСру ΠΏΡ€ΠΈ балансировкС Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ.

    upstream rdp {
    hash $rdp_cookie_mstshash;
    # …
    }

  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ ΠΎΠΏΡ†ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки «-m» ΠΈ «-M» для Π²Ρ‹Π²ΠΎΠ΄Π° списка встроСнных ΠΈ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ.
  • Π’ ΠΌΠΎΠ΄ΡƒΠ»Π΅ http_acme, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠΌ для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ получСния ΠΈ обновлСния сСртификатов с использованиСм ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° ACME (Automatic Certificate Management Environment, примСняСтся ΡƒΠ΄ΠΎΡΡ‚ΠΎΠ²Π΅Ρ€ΡΡŽΡ‰ΠΈΠΌ Ρ†Π΅Π½Ρ‚Ρ€ΠΎΠΌ Let’s Encrypt), Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ сборки с криптографичСской Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ BoringSSL.
  • Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ² «acme» Π² Π±Π»ΠΎΠΊΠ΅ «server», Ρ‡Ρ‚ΠΎ позволяСт Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ привязку ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ сСрвСру сразу Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² сСртификатов.

    server {
    listen 443 ssl;
    server_name example.com www.example.com;

    ssl_certificate $acme_cert_rsa;
    ssl_certificate_key $acme_cert_key_rsa;

    ssl_certificate $acme_cert_ecdsa;
    ssl_certificate_key $acme_cert_key_ecdsa;

    acme rsa;
    acme ecdsa;
    }

  • Из рСпозитория ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° nginx пСрСнСсСны измСнСния, накопившиСся Π² nginx 1.27, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€,
    Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ngx_stream_pass_module (для проброса принятых соСдинСний Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π² любой ΡΠ»ΡƒΡˆΠ°ΡŽΡ‰ΠΈΠΉ сокСт, связанный с Ρ‚Π°ΠΊΠΈΠΌΠΈ модулями, ΠΊΠ°ΠΊ http, stream ΠΈ mail), Π° Π² ΠΌΠΎΠ΄ΡƒΠ»ΡŒ stream Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… сСрвСров, конфигурация ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… опрСдСляСтся Π² Π±Π»ΠΎΠΊΠ΅ «server { … }» ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ server_name.

  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° опция «persistent», ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ Π½Π΅ ΠΆΠ΄Π°Ρ‚ΡŒ прохоТдСния ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ состояния сСрвСров послС ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, Ссли Ρ€Π°Π½Π΅Π΅ сСрвСр ΡƒΠΆΠ΅ Π±Ρ‹Π» ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½.
  • ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ балансировки «feedback», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ распрСдСляСт Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ ΠΏΠΎ HTTP-сСрвСрам Π½Π° основС ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… Π² ΠΎΡ‚Π²Π΅Ρ‚Π΅ ΠΎΡ‚ проксируСмого сСрвСра ΠΈΠ»ΠΈ внСшнСго сСрвиса, Ρ‡Ρ‚ΠΎ позволяСт ΠΏΡ€ΠΈ балансировкС ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, ΠΊΠ°ΠΊ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π½Π° CPU, объСм свободной памяти ΠΈ состояниС ΠΎΡ‡Π΅Ρ€Π΅Π΄Π΅ΠΉ оТидания.

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