Π‘Π»Π΅Π΄ Π³ΠΎΠ΄ΠΈΠ½Π° Π½Π° ΡΠ°Π·Π²ΠΈΡΠΈΠ΅
Π‘ΠΏΠΎΡΠ΅Π΄
Π‘ΡΠ΅Π΄ ΠΌΠΈΠ»ΠΈΠΎΠ½ΠΈΡΠ΅ Π½Π°ΠΉ-ΠΏΠΎΡΠ΅ΡΠ°Π²Π°Π½ΠΈ ΡΠ°ΠΉΡΠΎΠ²Π΅ Π² ΡΠ²Π΅ΡΠ° Π΄Π΅Π»ΡΡ Π½Π° nginx Π΅ 25.54% (ΠΏΡΠ΅Π΄ΠΈ Π³ΠΎΠ΄ΠΈΠ½Π° 26.22%, ΠΏΡΠ΅Π΄ΠΈ Π΄Π²Π΅ Π³ΠΎΠ΄ΠΈΠ½ΠΈ 23.76%). Π ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΠΎΠΊΠΎΠ»ΠΎ 459 ΠΌΠΈΠ»ΠΈΠΎΠ½Π° ΡΠ΅Π±ΡΠ°ΠΉΡΠ° ΡΠ°Π±ΠΎΡΡΡ Ρ Nginx (397 ΠΌΠΈΠ»ΠΈΠΎΠ½Π° ΠΏΡΠ΅Π΄ΠΈ Π³ΠΎΠ΄ΠΈΠ½Π°). ΠΎΡ
ΠΠ°ΠΉ-Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΡΠ΅Π»Π½ΠΈΡΠ΅ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΡ, Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΠΊΠ»ΠΎΠ½Π° Π½Π°Π³ΠΎΡΠ΅ ΠΏΠΎ Π²Π΅ΡΠΈΠ³Π°ΡΠ° 1.17.x:
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π°
limit_req_dry_run , ΠΊΠΎΠΉΡΠΎ Π°ΠΊΡΠΈΠ²ΠΈΡΠ° ΠΏΡΠΎΠ±Π½ΠΈΡ ΡΠ΅ΠΆΠΈΠΌ, Π² ΠΊΠΎΠΉΡΠΎ Π½Π΅ ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π°Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π²ΡΡΡ Ρ ΠΈΠ½ΡΠ΅Π½Π·ΠΈΠ²Π½ΠΎΡΡΡΠ° Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π·Π°ΡΠ²ΠΊΠΈΡΠ΅ (Π±Π΅Π· ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠΊΠΎΡΠΎΡΡΡΠ°), Π½ΠΎ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π° Π΄Π° ΠΎΡΡΠΈΡΠ° Π±ΡΠΎΡ Π½Π° Π·Π°ΡΠ²ΠΊΠΈΡΠ΅, Π½Π°Π΄Π²ΠΈΡΠ°Π²Π°ΡΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡΡΠ° Π² ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½Π°ΡΠ° ΠΏΠ°ΠΌΠ΅Ρ; - ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π°
limit_conn_dry_run , ΠΊΠΎΠΉΡΠΎ ΠΏΡΠ΅Π²ΠΊΠ»ΡΡΠ²Π° ΠΌΠΎΠ΄ΡΠ»Π° ngx_http_limit_conn_module Π² ΡΠ΅ΡΡΠΎΠ² ΡΠ΅ΠΆΠΈΠΌ, Π² ΠΊΠΎΠΉΡΠΎ Π±ΡΠΎΡΡ Π½Π° Π²ΡΡΠ·ΠΊΠΈΡΠ΅ Π½Π΅ Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½, Π½ΠΎ ΡΠ΅ ΠΎΡΡΠΈΡΠ°; - ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π° "
Π·Π°Π±Π°Π²ΡΠ½Π΅_Π·Π° ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅ ", ΠΊΠΎΠ΅ΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ Π·Π°Π±Π°Π²ΡΠ½Π΅ ΠΊΡΠΌ Π½Π΅ΡΠΏΡΠ»Π½ΠΎΠΌΠΎΡΠ΅Π½ΠΈ Π·Π°ΡΠ²ΠΊΠΈ Ρ ΠΊΠΎΠ΄ Π·Π° ΠΎΡΠ³ΠΎΠ²ΠΎΡ 401, Π·Π° Π΄Π° Π½Π°ΠΌΠ°Π»ΠΈΡΠ΅ ΠΈΠ½ΡΠ΅Π½Π·ΠΈΠ²Π½ΠΎΡΡΡΠ° Π½Π° ΠΎΡΠ³Π°ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΠ°ΡΠΎΠ»Π°ΡΠ° ΠΈ Π΄Π° ΡΠ΅ ΠΏΡΠ΅Π΄ΠΏΠ°Π·ΠΈΡΠ΅ ΠΎΡΠ°ΡΠ°ΠΊΠ° , ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠ°Π½Π΅ Π½Π° ΠΈΠ·ΠΌΠ΅ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ (ΡΠ°ΠΉΠΌΠΈΠ½Π³ Π°ΡΠ°ΠΊΠ°) ΠΏΡΠΈ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΡΠΈΡΡΠ΅ΠΌΠΈ, Π΄ΠΎ ΠΊΠΎΠΈΡΠΎ Π΄ΠΎΡΡΡΠΏΡΡ Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΏΠ°ΡΠΎΠ»Π° ,ΡΠ΅Π·ΡΠ»ΡΠ°Ρ ΠΎΡ ΠΏΠΎΠ΄Π·Π°ΡΠ²ΠΊΠ° ΠΈΠ»ΠΈJ.W.T. (JSON ΡΠ΅Π± ΡΠΎΠΊΠ΅Π½); - ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²ΠΈΡΠ΅ "limit_rate" ΠΈ "limit_rate_after", ΠΊΠ°ΠΊΡΠΎ ΠΈ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²ΠΈΡΠ΅ "proxy_upload_rate" ΠΈ "proxy_download_rate" Π½Π° ΠΏΠΎΡΠΎΠΊΠΎΠ²ΠΈΡ ΠΌΠΎΠ΄ΡΠ»;
- Π Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π°ΡΠ°
grpc_pass Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ, ΠΊΠΎΠΉΡΠΎ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ° Π°Π΄ΡΠ΅Ρ. ΠΠΊΠΎ Π°Π΄ΡΠ΅ΡΡΡ Π΅ ΡΠΊΠ°Π·Π°Π½ ΠΊΠ°ΡΠΎ ΠΈΠΌΠ΅ Π½Π° Π΄ΠΎΠΌΠ΅ΠΉΠ½, ΠΈΠΌΠ΅ΡΠΎ ΡΠ΅ ΡΡΡΡΠΈ ΡΡΠ΅Π΄ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡΠ΅ Π³ΡΡΠΏΠΈ ΡΡΡΠ²ΡΡΠΈ ΠΈ, Π°ΠΊΠΎ Π½Π΅ Π±ΡΠ΄Π΅ Π½Π°ΠΌΠ΅ΡΠ΅Π½ΠΎ, ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΡΠ΅Π·ΠΎΠ»Π²Π΅Ρ; - ΠΠΎΠ±Π°Π²Π΅Π½ΠΈ ΡΠ° Π½ΠΎΠ²ΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ
$proxy_protocol_server_addr ΠΈ$proxy_protocol_server_port , ΠΊΠΎΠΈΡΠΎ ΡΡΠ΄ΡΡΠΆΠ°Ρ Π°Π΄ΡΠ΅ΡΠ° ΠΈ ΠΏΠΎΡΡΠ° Π½Π° ΡΡΡΠ²ΡΡΠ°, ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈ ΠΎΡ Ρ Π΅Π΄ΡΡΠ° Π½Π° ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° PROXY; - Π ΠΌΠΎΠ΄ΡΠ»Π°
ngx_stream_limit_conn_module Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°$limit_conn_status , ΠΊΠΎΠΉΡΠΎ ΡΡΡ ΡΠ°Π½ΡΠ²Π° ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠ° ΠΎΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ°Π²Π°Π½Π΅ΡΠΎ Π½Π° Π±ΡΠΎΡ Π½Π° Π²ΡΡΠ·ΠΊΠΈΡΠ΅: PASSED, REJECTED ΠΈΠ»ΠΈ REJECTED_DRY_RUN; - Π ΠΌΠΎΠ΄ΡΠ»Π°
ngx_http_limit_req_module Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°$limit_req_status , ΠΊΠΎΠΉΡΠΎ ΡΡΡ ΡΠ°Π½ΡΠ²Π° ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠ° ΠΎΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° ΡΠΊΠΎΡΠΎΡΡΡΠ° Π½Π° ΠΏΡΠΈΡΡΠΈΠ³Π°Π½Π΅ Π½Π° Π·Π°ΡΠ²ΠΊΠΈ: PASSED, DELAYED, REJECTED, DELAYED_DRY_RUN ΠΈΠ»ΠΈ REJECTED_DRY_RUN; - ΠΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΠΌΠΎΠ΄ΡΠ»ΡΡ Π΅ ΡΠ³Π»ΠΎΠ±Π΅Π½
ngx_http_postpone_filter_module ; - ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΏΡΠ΅Π²ΠΊΠ»ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΈΠΌΠ΅Π½ΡΠ²Π°Π½ΠΈ Π±Π»ΠΎΠΊΠΎΠ²Π΅ βΠ»ΠΎΠΊΠ°ΡΠΈΡβ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΌΠ΅ΡΠΎΠ΄Π° $r->internal_redirect(), ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π΅Π½ ΠΎΡ Π²Π³ΡΠ°Π΄Π΅Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ Π½Π° Perl. Π’ΠΎΠ·ΠΈ ΠΌΠ΅ΡΠΎΠ΄ ΡΠ΅Π³Π° Π²ΠΊΠ»ΡΡΠ²Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° URI Ρ Π΅ΠΊΡΠ°Π½ΠΈΡΠ°Π½ΠΈ Π·Π½Π°ΡΠΈ;
- ΠΠΎΠ³Π°ΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π°ΡΠ° βupstreamβ Π² Π±Π»ΠΎΠΊΠ° Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ βupstreamβ.
Ρ Π°ΡΠΈΡ Β» Π·Π° ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° Π±Π°Π»Π°Π½ΡΠΈΡΠ°Π½Π΅ Π½Π° Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ΡΠΎ Ρ ΠΎΠ±Π²ΡΡΠ·Π²Π°Π½Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ-ΡΡΡΠ²ΡΡ, Π°ΠΊΠΎ Π·Π°Π΄Π°Π΄Π΅ΡΠ΅ ΠΏΡΠ°Π·Π½Π° ΡΡΠΎΠΉΠ½ΠΎΡΡ Π½Π° ΠΊΠ»ΡΡ, ΡΠ΅ΠΆΠΈΠΌΡΡ Π½Π° ΡΠ°Π²Π½ΠΎΠΌΠ΅ΡΠ½ΠΎ Π±Π°Π»Π°Π½ΡΠΈΡΠ°Π½Π΅ (ΠΊΡΡΠ³ΠΎΠ² ΡΠ΅ΠΆΠΈΠΌ) Π²Π΅ΡΠ΅ Π΅ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½; - ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° ioctl(FIONREAD), Π°ΠΊΠΎ Π΅ Π½Π°Π»ΠΈΡΠ½ΠΎ, Π·Π° Π΄Π° ΡΠ΅ ΠΈΠ·Π±Π΅Π³Π½Π΅ ΡΠ΅ΡΠ΅Π½Π΅ ΠΎΡ Π±ΡΡΠ·Π° Π²ΡΡΠ·ΠΊΠ° Ρ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru