ΠΠΎΡΠ»Π΅ Π³ΠΎΠ΄Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π° Π½ΠΎΠ²Π°Ρ ΡΡΠ°Π±ΠΈΠ»ΡΠ½Π°Ρ Π²Π΅ΡΠΊΠ° Π²ΡΡΠΎΠΊΠΎΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ HTTP-ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠΊΡΠΈ-ΡΠ΅ΡΠ²Π΅ΡΠ° nginx 1.30.0, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΠΎΠ±ΡΠ°Π»Π° Π² ΡΠ΅Π±Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½Π½ΡΠ΅ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ Π²Π΅ΡΠΊΠ΅ 1.29.x. Π Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ Π²ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΠΉ Π²Π΅ΡΠΊΠ΅ 1.30 Π±ΡΠ΄ΡΡ ΡΠ²ΡΠ·Π°Π½Ρ Ρ ΡΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ΠΌ ΡΠ΅ΡΡΡΠ·Π½ΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΈ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠ΅ΠΉ. Π ΡΠΊΠΎΡΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π±ΡΠ΄Π΅Ρ ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½Π° ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ Π²Π΅ΡΠΊΠ° nginx 1.31, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΎ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ Π½ΠΎΠ²ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ. ΠΠ»Ρ ΠΎΠ±ΡΡΠ½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, Ρ ΠΊΠΎΡΠΎΡΡΡ Π½Π΅Ρ Π·Π°Π΄Π°ΡΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ ΡΠΎ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠΌΠΈ ΠΌΠΎΠ΄ΡΠ»ΡΠΌΠΈ, ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ Π²Π΅ΡΠΊΡ, Π½Π° Π±Π°Π·Π΅ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠ°Π· Π² ΡΡΠΈ ΠΌΠ΅ΡΡΡΠ° ΡΠΎΡΠΌΠΈΡΡΡΡΡΡ Π²ΡΠΏΡΡΠΊΠΈ ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΎΠ΄ΡΠΊΡΠ° Nginx Plus. ΠΠΎΠ΄ nginx Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° ΡΠ·ΡΠΊΠ΅ Π‘ΠΈ ΠΈ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΠ΅ΠΉ BSD.
Π ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΡΠ΅Π²ΡΠ°Π»ΡΡΠΊΠΈΠΌ ΠΎΡΡΡΡΠΎΠΌ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Netcraft ΠΏΠΎΠ΄ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ nginx ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΎΠΊΠΎΠ»ΠΎ 321 ΠΌΠ»Π½ ΡΠ°ΠΉΡΠΎΠ² (Π³ΠΎΠ΄ Π½Π°Π·Π°Π΄ 245 ΠΌΠ»Π½, Π΄Π²Π° Π³ΠΎΠ΄Π° Π½Π°Π·Π°Π΄ β 243 ΠΌΠ»Π½, ΡΡΠΈ Π³ΠΎΠ΄Π° Π½Π°Π·Π°Π΄ 289 ΠΌΠ»Π½). Nginx ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π½Π° 16.08% Π²ΡΠ΅Ρ Π°ΠΊΡΠΈΠ²Π½ΡΡ ΡΠ°ΠΉΡΠΎΠ² (Π³ΠΎΠ΄ Π½Π°Π·Π°Π΄ 17.89%, Π΄Π²Π° Π³ΠΎΠ΄Π° Π½Π°Π·Π°Π΄ 18.15%, ΡΡΠΈ Π³ΠΎΠ΄Π° Π½Π°Π·Π°Π΄ 18.94%), ΡΡΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π²ΡΠΎΡΠΎΠΌΡ ΠΌΠ΅ΡΡΡ ΠΏΠΎ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡΠΈ Π² Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ (Π΄ΠΎΠ»Ρ Apache ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ 13.27% (Π³ΠΎΠ΄ Π½Π°Π·Π°Π΄ 16.03%, Π΄Π²Π° Π³ΠΎΠ΄Π° Π½Π°Π·Π°Π΄ 20.09%, ΡΡΠΈ Π³ΠΎΠ΄Π° Π½Π°Π·Π°Π΄ 20.52%), Cloudflare β 20.62% (17.81%, 14.12%, 11.32%), Google β 10.65% (9.89%, 10.41%, 9.89%).
ΠΡΠΈ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΠΈ Π²ΡΠ΅Ρ ΡΠ°ΠΉΡΠΎΠ² nginx ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ Π»ΠΈΠ΄Π΅ΡΡΡΠ²ΠΎ ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ 22.65% ΡΡΠ½ΠΊΠ° (Π³ΠΎΠ΄ Π½Π°Π·Π°Π΄ 20.48%, Π΄Π²Π° Π³ΠΎΠ΄Π° Π½Π°Π·Π°Π΄ β 22.31%, ΡΡΠΈ Π³ΠΎΠ΄Π° Π½Π°Π·Π°Π΄ β 25.94%), Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ Π΄ΠΎΠ»Ρ Apache ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ 12.19% (16.03%, 20.17%, 20.58%), Cloudflare β 15.27% (12.87%, 11.24%, 10.17%), OpenResty (ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° Π½Π° Π±Π°Π·Π΅ nginx ΠΈ LuaJIT) β 8.01% (9.36%, 7.93%, 7.94%).
Π‘ΡΠ΅Π΄ΠΈ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π° ΡΠ°ΠΌΡΡ ΠΏΠΎΡΠ΅ΡΠ°Π΅ΠΌΡΡ ΡΠ°ΠΉΡΠΎΠ² Π² ΠΌΠΈΡΠ΅ nginx Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ Π²ΡΠΎΡΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ Ρ Π΄ΠΎΠ»Π΅ΠΉ 19.85% (Π³ΠΎΠ΄ Π½Π°Π·Π°Π΄ 20.37%, Π΄Π²Π° Π³ΠΎΠ΄Π° Π½Π°Π·Π°Π΄ 20.63%, ΡΡΠΈ Π³ΠΎΠ΄Π° Π½Π°Π·Π°Π΄ 21.37%). ΠΠ΅ΡΠ²ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ ΡΠ΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Cloudflare β 26.84% (22.32%, 22.59%, 21.62%). ΠΠΎΠ»Ρ Apache httpd β 15.84% (17.95%, 20.09%, 21.18%).

ΠΠΎ Π΄Π°Π½Π½ΡΠΌ W3Techs nginx ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π½Π° 32.8% ΡΠ°ΠΉΡΠΎΠ² ΠΈΠ· ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π° ΡΠ°ΠΌΡΡ ΠΏΠΎΡΠ΅ΡΠ°Π΅ΠΌΡΡ (Π² Π°ΠΏΡΠ΅Π»Π΅ ΠΏΡΠΎΡΠ»ΠΎΠ³ΠΎ Π³ΠΎΠ΄Π° ΡΡΠΎΡ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΡΠΎΡΡΠ°Π²Π»ΡΠ» 33.8%, ΠΏΠΎΠ·Π°ΠΏΡΠΎΡΠ»ΠΎΠ³ΠΎ β 34.3%). ΠΠΎΠ»Ρ Apache Π·Π° Π³ΠΎΠ΄ ΡΠ½ΠΈΠ·ΠΈΠ»Π°ΡΡ Ρ 26.3% Π΄ΠΎ 23.9%, Π΄ΠΎΠ»Ρ Microsoft IIS ΡΠ½ΠΈΠ·ΠΈΠ»Π°ΡΡ Ρ 4% Π΄ΠΎ 3.4%, Π° Π΄ΠΎΠ»Ρ Caddy Ρ 0.3% Π΄ΠΎ 0.2%. ΠΠΎΠ»Ρ Node.js ΡΠ²Π΅Π»ΠΈΡΠΈΠ»Π°ΡΡ Ρ 4.4% Π΄ΠΎ 6.0%, Π° Π΄ΠΎΠ»Ρ LiteSpeed Ρ 14.6% Π΄ΠΎ 15.2%.
ΠΠ°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π·Π°ΠΌΠ΅ΡΠ½ΡΠ΅ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΡΠ΅ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ Π²Π΅ΡΠΊΠΈ 1.29.x:
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° TLS-ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ECH (Encrypted ClientHello), ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡΠ΅Π³ΠΎ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ESNI (Encrypted Server Name Indication) ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ Π΄Π»Ρ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°Ρ TLS-ΡΠ΅Π°Π½ΡΠΎΠ², ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ Π·Π°ΠΏΡΠΎΡΠ΅Π½Π½ΠΎΠ΅ Π΄ΠΎΠΌΠ΅Π½Π½ΠΎΠ΅ ΠΈΠΌΡ. ΠΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΠΎΡΠ»ΠΈΡΠΈΠ΅ ECH ΠΎΡ ESNI Π² ΡΠΎΠΌ, ΡΡΠΎ Π² ECH Π²ΠΌΠ΅ΡΡΠΎ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΏΠΎΠ»Π΅ΠΉ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ ΡΠΈΡΡΡΠ΅ΡΡΡ Π²ΡΡ TLS-ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ClientHello, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠ΅ΡΠΊΠΈ ΡΠ΅ΡΠ΅Π· ΠΏΠΎΠ»Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΎΡ Π²Π°ΡΡΠ²Π°Π΅Ρ ESNI, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΠ»Π΅ PSK (Pre-Shared Key). ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ECH Π²ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΡΠ΅ΡΠ΅Π· ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π΅ Β«ssl_ech_fileΒ» ΡΠ°ΠΉΠ»Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ECHConfig Π² ΡΠΎΡΠΌΠ°ΡΠ΅ PEM. ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π΄ΠΎΡΡΡΠΏΠ½Π° ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ±ΠΎΡΠΎΠΊ OpenSSL Ρ ECH.
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° Multipath TCP (MPTCP), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ΅Π³ΠΎ Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΠΏΠ°ΠΊΠ΅ΡΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ ΠΌΠ°ΡΡΡΡΡΠ°ΠΌ ΡΠ΅ΡΠ΅Π· ΡΠ°Π·Π½ΡΠ΅ ΡΠ΅ΡΠ΅Π²ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ. ΠΠ»Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ Β«listenΒ» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Β«multipathΒ».
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ ΡΠ΅Π°Π½ΡΠΎΠ² ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ² ΠΊ ΠΎΠ΄Π½ΠΈΠΌ ΠΈ ΡΠ΅ΠΌ ΠΆΠ΅ ΡΠ΅ΡΠ²Π΅ΡΠ°ΠΌ Π² Π³ΡΡΠΏΠΏΠ΅. ΠΠΎΡΡΡΠΏΠ½ΠΎ ΡΡΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°: Β«cookieΒ» β ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ° Π΄Π°Π½Π½ΡΡ ΠΎ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠΌ ΡΠ΅ΡΠ²Π΅ΡΠ΅ ΡΠ΅ΡΠ΅Π· ΡΠΊΠ°Π·Π°Π½Π½ΡΡ Cookie; Β«routeΒ» β ΠΏΡΠΎΠΊΡΠΈΡΡΠ΅ΠΌΡΠΉ ΡΠ΅ΡΠ²Π΅Ρ Π½Π°Π·Π½Π°ΡΠ°Π΅Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΡ ΠΌΠ°ΡΡΡΡΡ ΠΏΡΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠΈ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π·Π°ΠΏΡΠΎΡΠ°; Β«learnΒ» β nginx Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ ΠΎΡΠ²Π΅ΡΡ ΠΎΡ upstream-ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΈ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ Π½Π°ΡΠ°ΡΡΠ΅ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ ΡΠ΅Π°Π½ΡΡ. ΠΠ»Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ Π² Π±Π»ΠΎΠΊ Β«upstreamΒ» ΠΌΠΎΠ΄ΡΠ»Ρ Β«httpΒ» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π° Β«stickyΒ», Π° Π² Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ Β«serverΒ» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Β«routeΒ» ΠΈ Β«drainΒ».
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π° Β«early_hintsΒ» ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° HTTP-ΠΊΠΎΠ΄Π° 103 Π² ΠΎΡΠ²Π΅ΡΠ°Ρ ΠΎΡ Π±ΡΠΊΠ΅Π½Π΄ΠΎΠ² proxy ΠΈ gRPC. ΠΠΎΠ΄ 103 ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠ½ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ HTTP-Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² ΡΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ Π·Π°ΠΏΡΠΎΡΠ°, Π½Π΅ Π΄ΠΎΠΆΠΈΠ΄Π°ΡΡΡ ΠΏΠΎΠΊΠ° ΡΠ΅ΡΠ²Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡ Π²ΡΠ΅ ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ Π·Π°ΠΏΡΠΎΡΠΎΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΈ Π½Π°ΡΠ½ΡΡ ΠΎΡΠ΄Π°ΡΡ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ°. ΠΠΎΠ΄ΠΎΠ±Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠΎΠ±ΡΠ°ΡΡ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠΈ ΠΎ ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ ΠΎΡΠ΄Π°Π²Π°Π΅ΠΌΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΠ΅ΠΉ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°Ρ , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π·Π°Π³ΡΡΠΆΠ΅Π½Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅ css ΠΈ javascript). ΠΠΎΠ»ΡΡΠΈΠ² ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΡΠ΅ΡΡΡΡΠ°Ρ Π±ΡΠ°ΡΠ·Π΅Ρ ΠΏΡΠΈΡΡΡΠΏΠΈΡ ΠΊ ΠΈΡ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ Π½Π΅ Π΄ΠΎΠΆΠΈΠ΄Π°ΡΡΡ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ ΠΎΡΠ΄Π°ΡΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΡ, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠΊΡΠ°ΡΠΈΡΡ ΠΎΠ±ΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π·Π°ΠΏΡΠΎΡΠ°.
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ add_header_inherit ΠΈ add_trailer_inherit, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΏΡΠ°Π²ΠΈΠ»Π° Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, ΡΠΊΠ°Π·Π°Π½Π½ΡΡ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π°Ρ add_header ΠΈ add_trailer. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ Β«offΒ» ΠΎΡΠΌΠ΅Π½ΡΠ΅Ρ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Β«mergeΒ» Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Ρ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ ΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌ Π½Π° ΡΠ΅ΠΊΡΡΠ΅ΠΌ ΡΡΠΎΠ²Π½Π΅.
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π° Β«ssl_certificate_compressionΒ» Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΆΠ°ΡΠΈΠ΅ΠΌ TLS-ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΠ².
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π° max_headers, ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°ΡΡΠ°Ρ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ HTTP-Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² Π² Π·Π°ΠΏΡΠΎΡΠ΅. ΠΡΠΈ ΠΏΡΠ΅Π²ΡΡΠ΅Π½ΠΈΠΈ Π»ΠΈΠΌΠΈΡΠ° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠ° 400 (Bad Request). ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠ΅ΡΠ΅Π½Π΅ΡΠ΅Π½Π° ΠΈΠ· FreeNginx.
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ $request_port ΠΈ $is_request_port. ΠΠ΅ΡΠ²Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π½ΠΎΠΌΠ΅Ρ ΠΏΠΎΡΡΠ° ΠΈΠ· ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° URI ΠΈΠ»ΠΈ ΠΈΠ· Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° Β«HostΒ», Π° Π²ΡΠΎΡΠ°Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Β«:Β», Π΅ΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ $request_port Π½Π΅ ΠΏΡΡΡΠ°Ρ.
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ $ssl_sigalg ΠΈ $ssl_client_sigalg, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΡΡΠΎΠ²ΠΎΠΉ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ Π΄Π»Ρ TLS-ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ.
- Π Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ Β«geoΒ» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Β«volatileΒ», ΠΎΡΠΊΠ»ΡΡΠ°ΡΡΠΈΠΉ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Π Π°Π·ΡΠ΅ΡΠ΅Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ°ΡΠΊΠΈ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π΅ Β«includeΒ», ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π²Π½ΡΡΡΠΈ Π±Π»ΠΎΠΊΠ° Β«geoΒ».
- Π Π±Π»ΠΎΠΊΠ΅ Β«upstreamΒ» Π°ΠΊΡΠΈΠ²ΠΈΡΠΎΠ²Π°Π½Π° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π° Β«keepaliveΒ». Π Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ Β«keepaliveΒ», ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π² Π±Π»ΠΎΠΊΠ΅ Β«upstreamΒ», Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Β«localΒ». ΠΡΠΈ ΡΠΊΠ°Π·Π°Π½ΠΈΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°, Π²ΠΌΠ΅ΡΡΠΎ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΊ ΠΎΠ±ΡΠ΅ΠΌΡ upstream-ΡΠ΅ΡΠ²Π΅ΡΡ, ΡΠΏΠΎΠΌΠΈΠ½Π°Π΅ΠΌΠΎΠΌΡ Π² ΡΠ°Π·Π½ΡΡ Π±Π»ΠΎΠΊΠ°Ρ location ΠΈ server, Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΠΊ upstream.
- ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΠΏΡΠΎΠΊΡΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π²ΡΡΡΠ°Π²Π»Π΅Π½Π° Π²Π΅ΡΡΠΈΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° HTTP/1.1 Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ΅ΠΆΠΈΠΌΠ° keep-alive (Π² ΠΌΠΎΠ΄ΡΠ»Π΅ ngx_http_proxy_module Π²ΠΊΠ»ΡΡΠ΅Π½Π° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° keep-alive ΠΈ Π²ΡΡΡΠ°Π²Π»Π΅Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Β«1.1Β» Π² Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π΅ Β«proxy_http_versionΒ» ΠΈ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ΅Π½Π° ΠΎΡΠΏΡΠ°Π²ΠΊΠ° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° Β«ConnectionΒ»).
- Π ΠΌΠΎΠ΄ΡΠ»Ρ ngx_http_proxy Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° HTTP/2, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ HTTP/2 ΠΏΡΠΈ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΈ ΠΊ Π±ΡΠΊΠ΅Π½Π΄Π°ΠΌ.
- ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΊΠ»ΡΡΠ΅ΠΉ ΠΈΠ· Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΡΡ ΡΠΎΠΊΠ΅Π½ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ OpenSSL.
- Π ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° QUIC Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠ΅ΠΆΠΈΠΌΠ° 0-RTT, Π΄ΠΎΡΡΡΠΏΠ½Π°Ρ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°Ρ Ρ OpenSSL 3.5.1 ΠΈ Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²ΡΠΌΠΈ Π²ΡΠΏΡΡΠΊΠ°ΠΌΠΈ.
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ±ΠΎΡΠΊΠΈ Ρ ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ AWS-LC, ΡΠ°Π·Π²ΠΈΠ²Π°Π΅ΠΌΠΎΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Amazon.
- ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΎ ΡΠΆΠ°ΡΠΈΠ΅ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΠ² TLSv1.3.
- ΠΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½Π° ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ OpenSSL 4.0.
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡ ΡΠ΅Π»ΠΈΠ·Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° FreeNginx 1.30.0, ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡΠ΅Π³ΠΎ ΡΠΎΡΠΊ Nginx. Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΡ ΡΠΎΡΠΊΠ° Π²Π΅Π΄ΡΡ ΠΠ°ΠΊΡΠΈΠΌ ΠΡΠ½ΠΈΠ½, ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΊΠ»ΡΡΠ΅Π²ΡΡ
ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Nginx. FreeNginx ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½ΠΈΡΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ Π½Π΅ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΈΠΉ ΠΏΡΠΎΠ΅ΠΊΡ, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΠΈΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Ρ Nginx Π±Π΅Π· ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΠΎΠ³ΠΎ Π²ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΡΡΠ²Π°. ΠΠΎΠ΄ FreeNginx ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ ΠΏΠΎΡΡΠ°Π²Π»ΡΡΡΡΡ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΠ΅ΠΉ BSD. Π‘ΡΠ΅Π΄ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Π²Π΅ΡΠΊΠ΅ FreeNginx 1.30: Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° TLS-ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ECH (Encrypted Client Hello); ΡΠ»ΡΡΡΠ΅Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ limit_rate; Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ send_min_rate ΠΈ client_body_min_rate; ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΡΠΈΡΠ»Π° ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ ΠΈ ΠΈΠ½ΡΠ΅Π½ΡΠΈΠ²Π½ΠΎΡΡΠΈ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π² ΠΏΠΎΡΡΠΎΠ²ΠΎΠΌ ΠΏΡΠΎΠΊΡΠΈ; Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΠ GeoIP2 Π² ΠΌΠΎΠ΄ΡΠ»Π΅ GeoIP; ΡΡΠΈΠ»Π΅Π½Π° Π·Π°ΡΠΈΡΠ° ΠΌΠΎΠ΄ΡΠ»Ρ XSLT.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
