ΠΠ·ΠΏΡΠ°ΡΠ΅Π½ΠΎ ΠΎΡ ΠΏΡΡΠ²ΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π° Π½ΠΎΠ² ΠΎΡΠ½ΠΎΠ²Π΅Π½ ΠΊΠ»ΠΎΠ½ nginx 1.17, Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠΈ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ΡΠΎ Π½Π° Π½ΠΎΠ²ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ (ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΎ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½ΠΈ ΡΡΠ°Π±ΠΈΠ»Π½ΠΈ ΠΊΠ»ΠΎΠ½ 1.16 ΠΡΠ°Π²ΡΡ ΡΠ΅ ΡΠ°ΠΌΠΎ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ, ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ΅ΡΠΈΠΎΠ·Π½ΠΈ Π³ΡΠ΅ΡΠΊΠΈ ΠΈ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ).
ΠΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΠΏΡΠΎΠΌΠ΅Π½ΠΈ:
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²ΠΈΡΠ΅ "limit_rate" ΠΈ "limit_rate_after", ΠΊΠ°ΠΊΡΠΎ ΠΈ Π² "proxy_upload_rate" ΠΈ
"proxy_download_rate" Π½Π° ΠΏΠΎΡΠΎΠΊΠΎΠ²ΠΈΡ ΠΌΠΎΠ΄ΡΠ»;
- ΠΠΎΠ²ΠΈΡΠ΅Π½ΠΈ ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½ΠΈΡ Π·Π° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΎ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½Π° Π²Π΅ΡΡΠΈΡ Π½Π° OpenSSL - 0.9.8;
- ΠΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΠΌΠΎΠ΄ΡΠ»ΡΡ ngx_http_postpone_filter_module Π΅ ΠΈΠ·Π³ΡΠ°Π΄Π΅Π½;
- ΠΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅ Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π°ΡΠ° βincludeβ, ΠΊΠΎΡΡΠΎ Π½Π΅ ΡΠ°Π±ΠΎΡΠΈ Π² Π±Π»ΠΎΠΊΠΎΠ²Π΅ΡΠ΅ βifβ ΠΈ βlimit_exceptβ, ΡΠ° ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈ;
- ΠΠΎΠΏΡΠ°Π²Π΅Π½Π° Π΅ Π³ΡΠ΅ΡΠΊΠ° ΠΏΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π±Π°ΠΉΡΠΎΠ²ΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ "ΠΠ±Ρ
Π²Π°Ρ".
Π‘ΡΠ΅Π΄ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΈΡΠ΅ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΡ, ΠΎΡΠ°ΠΊΠ²Π°Π½ΠΈ Π² ΠΊΠ»ΠΎΠ½ 1.17, ΡΠ΅ ΡΠΏΠΎΠΌΠ΅Π½Π°Π²Π° ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΈ QUIC ΠΈ HTTP/3.
ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΎΡΠ±Π΅Π»Π΅ΠΆΠΈ ΠΈΠ·Π΄Π°Π²Π°Π½Π΅ njs 0.3.2, ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ Π½Π° JavaScript Π·Π° ΡΠ΅Π± ΡΡΡΠ²ΡΡΠ° nginx. ΠΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΡΡ njs ΠΏΡΠΈΠ»Π°Π³Π° ΡΡΠ°Π½Π΄Π°ΡΡΠΈΡΠ΅ Π½Π° ECMAScript ΠΈ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΠ°Π·ΡΠΈΡΠΈΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡΠ° Π½Π° nginx Π΄Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π° Π·Π°ΡΠ²ΠΊΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ°. Π‘ΠΊΡΠΈΠΏΡΠΎΠ²Π΅ΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π΅Π½ ΡΠ°ΠΉΠ» Π·Π° Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ°Π·ΡΠΈΡΠ΅Π½Π° Π»ΠΎΠ³ΠΈΠΊΠ° Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π·Π°ΡΠ²ΠΊΠΈ, Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ, Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΎ Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΎΡΠ³ΠΎΠ²ΠΎΡ, ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠ°Π½Π΅ Π½Π° Π·Π°ΡΠ²ΠΊΠ°/ΠΎΡΠ³ΠΎΠ²ΠΎΡ ΠΈΠ»ΠΈ Π±ΡΡΠ·ΠΎ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΌΡΠ½ΠΈΡΠ΅ΡΠ° Π·Π° ΡΠ΅ΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Π² ΡΠ΅Π± ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ°.
ΠΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° njs Π΄ΠΎΠ±Π°Π²Ρ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΡΠ°Π±Π»ΠΎΠ½ΠΈ Π½Π° Π½ΠΈΠ·ΠΎΠ²Π΅, Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½ΠΈ Π² ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΡΠ° ECMAScript 6 Π³.. Π¨Π°Π±Π»ΠΎΠ½ΠΈΡΠ΅ Π·Π° Π½ΠΈΠ·ΠΎΠ²Π΅ ΡΠ° Π½ΠΈΠ·ΠΎΠ²ΠΈ Π»ΠΈΡΠ΅ΡΠ°Π»ΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ Π²Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΈΠ·ΡΠ°Π·ΠΈ. ΠΠ·ΡΠ°Π·ΠΈΡΠ΅ ΡΠ΅ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Ρ Π² Π±Π»ΠΎΠΊ ${...}, ΠΏΠΎΡΡΠ°Π²Π΅Π½ Π²ΡΡΡΠ΅ Π² ΡΠ΅Π΄, ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π²ΠΊΠ»ΡΡΠ²Π° ΠΊΠ°ΠΊΡΠΎ ΠΎΡΠ΄Π΅Π»Π½ΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ (${name}), ΡΠ°ΠΊΠ° ΠΈ ΠΈΠ·ΡΠ°Π·ΠΈ (${5 + a + b})). Π Π΄ΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΡΠΌ ΠΎΠ±Π΅ΠΊΡΠ° RegExp Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° Π½Π°ΠΈΠΌΠ΅Π½ΡΠ²Π°Π½ΠΈ Π³ΡΡΠΏΠΈ, ΠΊΠΎΠ΅ΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΠ²ΡΡΠ·Π²Π°ΡΠ΅ ΡΠ°ΡΡΠΈ ΠΎΡ Π½ΠΈΠ·, ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²Π°Ρ Π½Π° ΡΠ΅Π³ΡΠ»ΡΡΠ΅Π½ ΠΈΠ·ΡΠ°Π·, Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΈ ΠΈΠΌΠ΅Π½Π° Π²ΠΌΠ΅ΡΡΠΎ ΡΠ΅ΡΠΈΠΉΠ½ΠΈ Π½ΠΎΠΌΠ΅ΡΠ° Π½Π° ΡΡΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΡΡΠ°. ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° GNU Readline.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru