ΠΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ Π²ΡΠΏΡΡΠΊ Π²ΡΡΠΎΠΊΠΎΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ 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