Π‘Π»Π΅Π΄ 13 ΠΌΠ΅ΡΠ΅ΡΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π±Π΅ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π΅Π½Π° Π½ΠΎΠ²Π°ΡΠ° ΡΡΠ°Π±ΠΈΠ»Π½Π° Π²Π΅ΡΡΠΈΡ Π½Π° Π²ΠΈΡΠΎΠΊΠΎΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΈΡ HTTP ΡΡΡΠ²ΡΡ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΈΡ ΠΏΡΠΎΠΊΡΠΈ ΡΡΡΠ²ΡΡ nginx 1.22.0, ΠΊΠΎΡΡΠΎ Π²ΠΊΠ»ΡΡΠ²Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅, Π½Π°ΡΡΡΠΏΠ°Π½ΠΈ Π² ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° Π²Π΅ΡΡΠΈΡ 1.21.x. Π Π±ΡΠ΄Π΅ΡΠ΅ Π²ΡΠΈΡΠΊΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΡΡΠ°Π±ΠΈΠ»Π½Π°ΡΠ° Π²Π΅ΡΡΠΈΡ 1.22 ΡΠ΅ Π±ΡΠ΄Π°Ρ ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ΅ΡΠΈΠΎΠ·Π½ΠΈ Π³ΡΠ΅ΡΠΊΠΈ ΠΈ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ. Π‘ΠΊΠΎΡΠΎ ΡΠ΅ Π±ΡΠ΄Π΅ ΡΠΎΡΠΌΠΈΡΠ°Π½Π° ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° Π²Π΅ΡΡΠΈΡ nginx 1.23, Π² ΠΊΠΎΡΡΠΎ ΡΠ΅ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠΈ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ΡΠΎ Π½Π° Π½ΠΎΠ²ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ. ΠΠ° ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡΠ΅ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ, ΠΊΠΎΠΈΡΠΎ Π½ΡΠΌΠ°Ρ Π·Π° ΡΠ΅Π» Π΄Π° ΠΎΡΠΈΠ³ΡΡΡΡ ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡ Ρ ΡΡΠ΅ΡΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ, ΡΠ΅ ΠΏΡΠ΅ΠΏΠΎΡΡΡΠ²Π° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° Π²Π΅ΡΡΠΈΡ, Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° ΠΊΠΎΡΡΠΎ Π½Π° Π²ΡΠ΅ΠΊΠΈ ΡΡΠΈ ΠΌΠ΅ΡΠ΅ΡΠ° ΡΠ΅ ΡΠΎΡΠΌΠΈΡΠ°Ρ ΠΈΠ·Π΄Π°Π½ΠΈΡ Π½Π° ΡΡΡΠ³ΠΎΠ²ΡΠΊΠΈΡ ΠΏΡΠΎΠ΄ΡΠΊΡ Nginx Plus.
Π‘ΠΏΠΎΡΠ΅Π΄ Π°ΠΏΡΠΈΠ»ΡΠΊΠΈΡ ΠΎΡΡΠ΅Ρ Π½Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ° Netcraft, nginx ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π½Π° 20.08% ΠΎΡ Π²ΡΠΈΡΠΊΠΈ Π°ΠΊΡΠΈΠ²Π½ΠΈ ΡΠ°ΠΉΡΠΎΠ²Π΅ (ΠΏΡΠ΅Π΄ΠΈ Π³ΠΎΠ΄ΠΈΠ½Π° 20.15%, ΠΏΡΠ΅Π΄ΠΈ Π΄Π²Π΅ Π³ΠΎΠ΄ΠΈΠ½ΠΈ 19.56%), ΠΊΠΎΠ΅ΡΠΎ ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²Π° Π½Π° Π²ΡΠΎΡΠΎΡΠΎ ΠΌΡΡΡΠΎ ΠΏΠΎ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡ Π² ΡΠ°Π·ΠΈ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡ (ΡΠ°ΡΡΡΠ° Π½Π° Apache Π΅ 22.58% (ΠΏΡΠ΅Π΄ΠΈ Π³ΠΎΠ΄ΠΈΠ½Π° 25.38%), Cloudflare β 10.42% (8.51%), Google β 8.89% (10.09%). ΠΡΠΈ ΡΠ°Π·Π³Π»Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° Π²ΡΠΈΡΠΊΠΈ ΡΠ°ΠΉΡΠΎΠ²Π΅, nginx Π·Π°ΠΏΠ°Π·Π²Π° Π»ΠΈΠ΄Π΅ΡΡΡΠ²ΠΎΡΠΎ ΠΈ Π·Π°Π΅ΠΌΠ° 31.13% ΠΎΡ ΠΏΠ°Π·Π°ΡΠ° (ΠΏΡΠ΅Π΄ΠΈ Π³ΠΎΠ΄ΠΈΠ½Π° 35.34%, ΠΏΡΠ΅Π΄ΠΈ Π΄Π²Π΅ Π³ΠΎΠ΄ΠΈΠ½ΠΈ β 36.91%), Π΄ΠΎΠΊΠ°ΡΠΎ ΡΠ°ΡΡΡΠ° Π½Π° Apache Π΅ 23.08% (25.98%), OpenResty (ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° nginx ΠΈ LuaJIT) β 8.01% (6.55%), Cloudflare β 5.49%, Microsoft IIS β 4% (5.96%).
Π‘ΡΠ΅Π΄ ΠΌΠΈΠ»ΠΈΠΎΠ½Π° Π½Π°ΠΉ-ΠΏΠΎΡΠ΅ΡΠ°Π²Π°Π½ΠΈ ΡΠ°ΠΉΡΠΎΠ²Π΅ Π² ΡΠ²Π΅ΡΠ°, Π΄Π΅Π»ΡΡ Π½Π° nginx Π΅ 21.79% (ΠΏΡΠ΅Π΄ΠΈ Π³ΠΎΠ΄ΠΈΠ½Π° 23.06%, ΠΏΡΠ΅Π΄ΠΈ Π΄Π²Π΅ Π³ΠΎΠ΄ΠΈΠ½ΠΈ 25.54%). Π ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΠΏΠΎΠ΄ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° nginx ΡΠ°Π±ΠΎΡΡΡ ΠΎΠΊΠΎΠ»ΠΎ 361 ΠΌΠ»Π½. ΡΠ°ΠΉΡΠ° (ΠΏΡΠ΅Π΄ΠΈ Π³ΠΎΠ΄ΠΈΠ½Π° 419 ΠΌΠ»Π½.). Π‘ΠΏΠΎΡΠ΅Π΄ W3Techs, nginx ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π½Π° 33.5% ΠΎΡ ΡΠ°ΠΉΡΠΎΠ²Π΅ΡΠ΅ ΠΎΡ ΠΌΠΈΠ»ΠΈΠΎΠ½Π° Π½Π°ΠΉ-ΠΏΠΎΡΠ΅ΡΠ°Π²Π°Π½ΠΈ, ΠΏΡΠ΅Π· ΠΌΠ°ΠΉ ΠΌΠΈΠ½Π°Π»Π°ΡΠ° Π³ΠΎΠ΄ΠΈΠ½Π° ΡΠΎΠ·ΠΈ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π» Π±Π΅ΡΠ΅ 33.8%, ΠΏΡΠ΅Π΄ΠΈ Π΄Π²Π΅ Π³ΠΎΠ΄ΠΈΠ½ΠΈ β 31.9%. ΠΠ΅Π»ΡΡ Π½Π° Apache Π·Π° Π³ΠΎΠ΄ΠΈΠ½Π° Π΅ Π½Π°ΠΌΠ°Π»ΡΠ» ΠΎΡ 33.8% Π΄ΠΎ 31.5%, Π° Π΄Π΅Π»ΡΡ Π½Π° Microsoft IIS ΠΎΡ 7% Π΄ΠΎ 6%. ΠΠ΅Π»ΡΡ Π½Π° LiteSpeed Π΅ Π½Π°ΡΠ°ΡΠ½Π°Π» ΠΎΡ 8.5% Π΄ΠΎ 12.1%, Π° Π½Π° Node.js ΠΎΡ 1.2% Π΄ΠΎ 1.9%. Π Π ΡΡΠΈΡ nginx ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π½Π° 79.8% ΠΎΡ Π½Π°ΠΉ-ΠΏΠΎΡΠ΅ΡΠ°Π²Π°Π½ΠΈΡΠ΅ ΡΠ°ΠΉΡΠΎΠ²Π΅ (ΠΏΡΠ΅Π΄ΠΈ Π³ΠΎΠ΄ΠΈΠ½Π° β 79.1%).
ΠΠ°ΠΉ-Π·Π½Π°ΡΠΈΠΌΠΈΡΠ΅ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΡ, Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ Π² ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° ΡΠΎΡΠΌΠΈΡΠ°Π½Π΅ Π½Π° ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° Π²Π΅ΡΡΠΈΡ 1.21.x:
- Π Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²ΠΈΡΠ΅ Β«proxy_ssl_certificateΒ», Β«proxy_ssl_certificate_keyΒ», Β«grpc_ssl_certificateΒ», Β«grpc_ssl_certificate_keyΒ», Β«uwsgi_ssl_certificateΒ» ΠΈ Β«uwsgi_ssl_certificate_keyΒ» Π±Π΅ΡΠ΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ.
- Π ΠΌΠΎΠ΄ΡΠ»Π° Π·Π° ΠΏΠΎΡΠ΅Π½ΡΠΊΠΈ ΠΏΡΠΎΠΊΡΠΈ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΡΠ΅ΠΆΠΈΠΌΠ° Β«pipeliningΒ» Π·Π° ΠΏΡΠ΅Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ POP3 ΠΈΠ»ΠΈ IMAP Π·Π°ΡΠ²ΠΊΠΈ Π² Π΅Π΄Π½Π° Π²ΡΡΠ·ΠΊΠ°, ΠΊΠ°ΠΊΡΠΎ ΠΈ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° Π½ΠΎΠ²Π° Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π° Β«max_errorsΒ», ΠΊΠΎΡΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Ρ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½ΠΈΡ Π±ΡΠΎΠΉ Π½Π° ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π½ΠΈ Π³ΡΠ΅ΡΠΊΠΈ, ΡΠ»Π΅Π΄ ΠΊΠΎΠΈΡΠΎ Π²ΡΡΠ·ΠΊΠ°ΡΠ° ΡΠ΅ Π±ΡΠ΄Π΅ Π·Π°ΡΠ²ΠΎΡΠ΅Π½Π°.
- Π Π΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΎ Π΅ ΠΏΡΠ΅Π΄Π°Π²Π°Π½Π΅ Π½Π° Π·Π°Π³Π»Π°Π²ΠΈΡΡΠ° Β«Auth-SSL-ProtocolΒ» ΠΈ Β«Auth-SSL-CipherΒ» ΡΡΡΠ²ΡΡΠ° Π·Π° Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π½Π° ΠΏΠΎΡΠ΅Π½ΡΠΊΠΈΡ ΠΏΡΠΎΠΊΡΠΈ.
- Π ΠΌΠΎΠ΄ΡΠ»Π° stream Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° TLS ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΠ΅ΡΠΎ ALPN. ΠΠ° Π΄Π° ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈ ΡΠΏΠΈΡΡΠΊΡΡ Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½ΠΈΡΠ΅ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΈ ALPN (h2, http/1.1) Π΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π° ssl_alpn, Π° Π·Π° ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΡΠΏΠΎΡΠ°Π·ΡΠΌΠ΅Π½ΠΈΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» ALPN Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°ΡΠ° $ssl_alpn_protocol.
- Π ΠΌΠΎΠ΄ΡΠ»Π° stream Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Β«fastopenΒ», ΠΊΠΎΠΉΡΠΎ Π°ΠΊΡΠΈΠ²ΠΈΡΠ° ΡΠ΅ΠΆΠΈΠΌΠ° Β«TCP Fast OpenΒ» Π·Π° ΡΠ»ΡΡΠ°ΡΠΈ ΡΠΎΠΊΠ΅ΡΠΈ.
- ΠΠ°ΡΡΡΠΎΠ΅Π½ΠΎ Π΅ Π΅ΡΠΊΠΉΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ «»», «», Β«\Β», Β«^Β», Β«`Β», Β«{Β«, Β«|Β» ΠΈ Β«}Β» ΠΏΡΠΈ ΠΏΡΠΎΠΊΡΠΈΡΠ°Π½Π΅ΡΠΎ Ρ ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° URI.
- Π ΠΌΠΎΠ΄ΡΠ»Π° stream Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π° proxy_half_close, Ρ ΠΊΠΎΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠ²Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΡΠΎ ΠΏΡΠΈ Π·Π°ΡΠ²Π°ΡΡΠ½Π΅ Π½Π° ΠΏΡΠΎΠΊΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° TCP Π²ΡΡΠ·ΠΊΠ° ΠΎΡ Π΅Π΄Π½Π°ΡΠ° ΡΡΡΠ°Π½Π° (Β«TCP half-closeΒ»).
- Π ΠΌΠΎΠ΄ΡΠ»Π° ngx_http_mp4_module Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° Π½ΠΎΠ²Π° Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π° mp4_start_key_frame Π·Π° ΠΈΠ·Π»ΡΡΠ²Π°Π½Π΅ Π½Π° Π²ΠΈΠ΄Π΅ΠΎ ΠΏΠΎΡΠΎΠΊ, Π·Π°ΠΏΠΎΡΠ²Π°ΠΉΠΊΠΈ ΠΎΡ ΠΊΠ»ΡΡΠΎΠ² ΠΊΠ°Π΄ΡΡ.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° $ssl_curve, ΠΊΠΎΡΡΠΎ Π²ΡΡΡΠ° ΡΠΈΠΏΠ° Π½Π° Π΅Π»ΠΈΠΏΡΠΈΡΠ½Π°ΡΠ° ΠΊΡΠΈΠ²Π°, ΠΈΠ·Π±ΡΠ°Π½Π° Π·Π° ΡΠΏΠΎΡΠ°Π·ΡΠΌΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠ»ΡΡΠΎΠ²Π΅ΡΠ΅ Π² TLS ΡΠ΅ΡΠΈΡΡΠ°.
- Π Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π°ΡΠ° Β«sendfile_max_chunkΒ» ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π΅ ΠΏΡΠΎΠΌΠ΅Π½Π΅Π½Π° Π½Π° 2 ΠΌΠ΅Π³Π°Π±Π°ΠΉΡΠ°;
- ΠΡΠΈΠ³ΡΡΠ΅Π½Π° Π΅ ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡ Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° OpenSSL 3.0. ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ΡΠΎ SSL_sendfile() ΠΏΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° OpenSSL 3.0.
- ΠΠΊΠ»ΡΡΠ΅Π½ΠΎ Π΅ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° PCRE2, ΠΊΠΎΡΡΠΎ ΠΏΡΠ΅Π΄Π»Π°Π³Π° ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΈ ΠΈΠ·ΡΠ°Π·ΠΈ.
- ΠΡΠΈ Π·Π°ΡΠ΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈ ΡΡΡΠ²ΡΡ Π΅ Π½Π°ΡΡΡΠΎΠ΅Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Π½ΠΈΠ²Π° Π½Π° Π·Π°ΡΠΈΡΠ°, ΠΏΠΎΠ΄ΠΊΡΠ΅ΠΏΡΠ½ΠΈ ΠΎΡ OpenSSL 1.1.0 ΠΈ Π·Π°Π΄Π°Π²Π°Π½ΠΈ ΡΡΠ΅Π· ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ° Β«@SECLEVEL=NΒ» Π² Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π°ΡΠ° ssl_ciphers.
- ΠΡΠ΅ΠΊΡΠ°ΡΠ΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° Π΅ΠΊΡΠΏΠΎΡΡΠΈΡΠ°Π½ΠΈΡ Π½Π°Π±ΠΎΡ ΠΎΡ ΡΠΈΡΡΠΈ.
- Π API Π·Π° ΡΠΈΠ»ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠ»ΠΎΡΠΎ Π½Π° Π·Π°ΡΠ²ΠΊΠ°ΡΠ° Π΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½Π° Π±ΡΡΠ΅ΡΠΈΠ·Π°ΡΠΈΡ Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°Π½ΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ.
- ΠΠ° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° FreeBSD Π΅ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈΡ Π²ΠΈΠΊ sendfile, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π·Π° ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ ΠΏΡΠ΅Π΄Π°Π²Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ°ΠΉΠ»ΠΎΠ² Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ ΠΈ ΡΠΎΠΊΠ΅Ρ. Π Π΅ΠΆΠΈΠΌΡΡ sendfile(SF_NODISKIO) Π΅ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½ ΠΈ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΡΠ΅ΠΆΠΈΠΌΠ° sendfile(SF_NOCACHE).
- ΠΡΠ΅ΠΊΡΠ°ΡΠ΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π·Π° ΡΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π½Π° HTTP/2 Π²ΡΡΠ·ΠΊΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠΈ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΠ΅ΡΠΎ NPN (Next Protocol Negotiation) Π²ΠΌΠ΅ΡΡΠΎ ALPN.
- ΠΡΠΈΠ³ΡΡΠ΅Π½Π° Π΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° Π½Π° HTTP/1.0 Π·Π°ΡΠ²ΠΊΠΈ, Π²ΠΊΠ»ΡΡΠ²Π°ΡΠΈ HTTP Π·Π°Π³Π»Π°Π²ΠΈΠ΅ Β«Transfer-EncodingΒ» (ΠΏΠΎΡΠ²ΠΈ ΡΠ΅ Π² Π²Π΅ΡΡΠΈΡΡΠ° Π½Π° ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° HTTP/1.1).
- Π£ΡΠΈΠ»Π΅Π½Π° Π΅ Π·Π°ΡΠΈΡΠ°ΡΠ° ΠΎΡ Π°ΡΠ°ΠΊΠΈ ΠΎΡ ΠΊΠ»Π°Ρ Β«HTTP Request SmugglingΒ» ΠΊΡΠΌ ΡΠΈΡΡΠ΅ΠΌΠΈΡΠ΅ ΡΡΠΎΠ½Ρ-Π΅Π½Π΄-Π±Π΅ΠΊΠ΅Π½Π΄, ΠΊΠΎΠΈΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ Π½Π°ΠΌΠ΅ΡΠ°ΡΠ° Π² ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° Π·Π°ΡΠ²ΠΊΠΈ Π½Π° Π΄ΡΡΠ³ΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ, ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°Π½ΠΈ Π² ΡΡΡΠΈΡ ΠΏΠΎΡΠΎΠΊ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠΎΠ½Ρ-Π΅Π½Π΄Π° ΠΈ Π±Π΅ΠΊΠ΅Π½Π΄Π°. Nginx ΡΠ΅Π³Π° Π²ΠΈΠ½Π°Π³ΠΈ Π²ΡΡΡΠ° Π³ΡΠ΅ΡΠΊΠ° ΠΏΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΌΠ΅ΡΠΎΠ΄Π° CONNECT; ΠΏΡΠΈ Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π·Π°Π΄Π°Π²Π°Π½Π΅ Π½Π° Π·Π°Π³Π»Π°Π²ΠΈΡΡΠ° Β«Content-LengthΒ» ΠΈ Β«Transfer-EncodingΒ»; ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠ΅ Π½Π° ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»ΠΈ ΠΈΠ»ΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Π½ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ Π² Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ΡΠΎ, ΠΈΠΌΠ΅ΡΠΎ Π½Π° HTTP Π·Π°Π³Π»Π°Π²ΠΈΠ΅ΡΠΎ ΠΈΠ»ΠΈ Π² ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° Π½Π° Π·Π°Π³Π»Π°Π²ΠΈΠ΅ΡΠΎ Β«HostΒ».
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
