ΠΡΠ½ΠΎΠ²Π½ΠΈΡΡ ΠΊΠ»ΠΎΠ½ Π½Π° nginx 1.25.5 Π±Π΅ΡΠ΅ ΠΏΡΡΠ½Π°Ρ, Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° ΠΊΠΎΠΉΡΠΎ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π½ΠΎΠ²ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠ°ΡΠ°Π»Π΅Π»Π½ΠΎ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½ΠΈΡΡ ΡΡΠ°Π±ΠΈΠ»Π΅Π½ ΠΊΠ»ΠΎΠ½ 1.24.x ΡΡΠ΄ΡΡΠΆΠ° ΡΠ°ΠΌΠΎ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ, ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΠ΅ΡΠΈΠΎΠ·Π½ΠΈ Π³ΡΠ΅ΡΠΊΠΈ ΠΈ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ. Π Π±ΡΠ΄Π΅ΡΠ΅ Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡ ΠΊΠ»ΠΎΠ½ 1.25.x ΡΠ΅ ΡΠ΅ ΡΠΎΡΠΌΠΈΡΠ° ΡΡΠ°Π±ΠΈΠ»Π΅Π½ ΠΊΠ»ΠΎΠ½ 1.26. ΠΠΎΠ΄ΡΡ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° C ΠΈ ΡΠ΅ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π° ΠΏΠΎΠ΄ BSD Π»ΠΈΡΠ΅Π½Π·.
Π‘ΡΠ΅Π΄ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅:
- ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π·Π° Π²ΠΈΡΡΡΠ°Π»Π½ΠΈ ΡΡΡΠ²ΡΡΠΈ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΊΡΠΌ ΠΏΠΎΡΠΎΠΊΠΎΠ²ΠΈΡ ΠΌΠΎΠ΄ΡΠ», ΡΠΈΡΡΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π΅ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½Π° Π² Π±Π»ΠΎΠΊΠ° βΡΡΡΠ²ΡΡ { ... }β Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π°ΡΠ° server_name. ΡΡΡΠ²ΡΡ { ΡΡΡΠ²ΡΡ_ΠΈΠΌΠ΅ ~^(www\.)?(.+)$; proxy_pass www.$2:12345; }
- ΠΠΎΠ±Π°Π²Π΅Π½ Π΅ Π½ΠΎΠ² ΠΌΠΎΠ΄ΡΠ» ngx_stream_pass_module, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π° ΠΏΡΠ΅ΠΏΡΠ°ΡΠ° ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡΠ΅ Π²ΡΡΠ·ΠΊΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ ΠΊΡΠΌ Π²ΡΠ΅ΠΊΠΈ ΡΠ»ΡΡΠ°Ρ ΡΠΎΠΊΠ΅Ρ, ΡΠ²ΡΡΠ·Π°Π½ Ρ ΠΌΠΎΠ΄ΡΠ»ΠΈ ΠΊΠ°ΡΠΎ http, ΠΏΠΎΡΠΎΠΊ ΠΈ ΠΏΠΎΡΠ°. ΠΏΠΎΡΠΎΠΊ {ΡΡΡΠ²ΡΡ {ΡΠ»ΡΡΠ°ΠΌ 12345 ssl; ssl_ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ domain.crt; ssl_certificate_key domain.key; ΠΏΠ°Ρ 127.0.0.1:8000; }}
- ΠΠΈΡΠ΅ΠΊΡΠΈΠ²Π°ΡΠ° Π·Π° ΡΠ»ΡΡΠ°Π½Π΅ Π½Π° ΠΌΠΎΠ΄ΡΠ»Π° Π·Π° ΠΏΠΎΡΠΎΠΊ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ βdeferredβ (ΡΠ°Π·ΡΠ΅ΡΠ°Π²Π° ΠΎΡΠ»ΠΎΠΆΠ΅Π½ΠΎ ΠΏΡΠΈΠ΅ΠΌΠ°Π½Π΅), βaccept_filterβ (ΡΠΈΠ»ΡΡΡ Π·Π° Π²Ρ ΠΎΠ΄ΡΡΠ° Π²ΡΡΠ·ΠΊΠ°, ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ ΠΏΡΠ΅Π΄ΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° ΡΡΠ½ΠΊΡΠΈΡΡΠ° Π·Π° ΠΏΡΠΈΠ΅ΠΌΠ°Π½Π΅) ΠΈ βsetfibβ (Π·Π°Π΄Π°Π²Π°Π½Π΅ Π½Π° ΡΠ°Π±Π»ΠΈΡΠ°ΡΠ° Π·Π° ΠΌΠ°ΡΡΡΡΡΠΈΠ·ΠΈΡΠ°Π½Π΅).
- ΠΠ° Π½ΡΠΊΠΎΠΈ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠΈ Π΅ Π²Π½Π΅Π΄ΡΠ΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ Π½Π° ΡΠ°Π·ΠΌΠ΅ΡΠ° Π½Π° Π±Π»ΠΎΠΊΠ° (ΠΊΠ΅Ρ Π»ΠΈΠ½ΠΈΡ), ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ Π·Π° ΠΏΡΠ΅Ρ Π²ΡΡΠ»ΡΠ½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ΅ΡΠ° Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠ° ΠΈ ΠΏΠ°ΠΌΠ΅ΡΡΠ°.
- Π ΡΠΈΡΡΠ΅ΠΌΠΈΡΠ΅ Π½Π° Apple Silicon Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡΡΠ° Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ Homebrew.
- ΠΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅ Ρ ΠΊΡΡΡΡΠΎΡΠ°Π½ΠΎΡΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅ Π·Π° Windows ΡΠ° ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈ.
- ΠΠΎΠΏΡΠ°Π²Π΅Π½Π° Π΅ Π³ΡΠ΅ΡΠΊΠ°, ΠΊΠΎΡΡΠΎ ΠΏΡΠΈΡΠΈΠ½ΡΠ²Π° Π·Π°ΡΠ²Π°ΡΡΠ½Π΅ Π½Π° Π²ΡΡΠ·ΠΊΠΈ ΠΏΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΡΠ΅ΠΆΠΈΠΌ 0-RTT Π² ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° QUIC.
ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΎΡΠ±Π΅Π»Π΅ΠΆΠΈΠΌ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΡΠ°Π±ΠΈΠ»Π½Π° Π²Π΅ΡΡΠΈΡ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° FreeNginx 1.26.0, ΠΊΠΎΠΉΡΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π° ΡΠ°Π·ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ Π½Π° Nginx. Π Π°Π·ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ΡΠΎ ΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π° ΠΎΡ ΠΠ°ΠΊΡΠΈΠΌ ΠΡΠ½ΠΈΠ½, Π΅Π΄ΠΈΠ½ ΠΎΡ ΠΊΠ»ΡΡΠΎΠ²ΠΈΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ Π½Π° Nginx. FreeNginx ΡΠ΅ ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½ΠΈΡΠ° ΠΊΠ°ΡΠΎ ΠΏΡΠΎΠ΅ΠΊΡ Ρ Π½Π΅ΡΡΠΎΠΏΠ°Π½ΡΠΊΠ° ΡΠ΅Π», ΠΊΠΎΠΉΡΠΎ ΠΎΡΠΈΠ³ΡΡΡΠ²Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ΄ΠΎΠ²Π°ΡΠ° Π±Π°Π·Π° Π½Π° Nginx Π±Π΅Π· ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½Π° Π½Π°ΠΌΠ΅ΡΠ°. ΠΠ΅ΡΡΠΈΡ 1.26.0 Π΅ ΠΌΠ°ΡΠΊΠΈΡΠ°Π½Π° ΠΊΠ°ΡΠΎ ΡΡΠ°Π±ΠΈΠ»Π½Π° Π²Π΅ΡΡΠΈΡ, Π²ΠΊΠ»ΡΡΠ²Π°ΡΠ° ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΠΈ ΠΏΠΎΠΏΡΠ°Π²ΠΊΠΈ ΠΎΡ ΠΈΠ·Π΄Π°Π½ΠΈΡΡΠ° Π½Π° Π³Π»Π°Π²Π½ΠΈΡ ΠΊΠ»ΠΎΠ½ Π½Π° Nginx 1.25. ΠΠ°ΡΠ΅Π΄ Ρ Π΄ΡΡΠ³ΠΈ Π½Π΅ΡΠ°, FreeNginx 1.26.0 Π²ΠΊΠ»ΡΡΠ²Π° Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° HTTP/3 ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π°, ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΡ Π·Π° ΠΏΡΠΎΡΠΈΠ²ΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Π½Π° DoS Π°ΡΠ°ΠΊΠΈ ΠΈ ΠΊΠΎΡΠ΅ΠΊΡΠΈΠΈ, ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½Π° I/O ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°.
Π ΡΡΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ Π±Π΅ΡΠ΅ ΠΏΡΡΠ½Π°Ρ njs 0.8.4, JavaScript ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ Π·Π° ΡΠ΅Π± ΡΡΡΠ²ΡΡΠ° nginx. ΠΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΡΡ njs ΠΏΡΠΈΠ»Π°Π³Π° ΡΡΠ°Π½Π΄Π°ΡΡΠΈΡΠ΅ Π½Π° ECMAScript ΠΈ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΠ°Π·ΡΠΈΡΠΈΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡΠ° Π½Π° nginx Π΄Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π° Π·Π°ΡΠ²ΠΊΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ°. Π‘ΠΊΡΠΈΠΏΡΠΎΠ²Π΅ΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π΅Π½ ΡΠ°ΠΉΠ» Π·Π° Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ°Π·ΡΠΈΡΠ΅Π½Π° Π»ΠΎΠ³ΠΈΠΊΠ° Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π·Π°ΡΠ²ΠΊΠΈ, Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ, Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΎ Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΎΡΠ³ΠΎΠ²ΠΎΡ, ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠ°Π½Π΅ Π½Π° Π·Π°ΡΠ²ΠΊΠ°/ΠΎΡΠ³ΠΎΠ²ΠΎΡ ΠΈΠ»ΠΈ Π±ΡΡΠ·ΠΎ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΌΡΠ½ΠΈΡΠ΅ΡΠ° Π·Π° ΡΠ΅ΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Π² ΡΠ΅Π± ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ°. Π Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ: ΠΊΡΠΌ CLI Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° QuickJS JavaScript Π΄Π²ΠΈΠ³Π°ΡΠ΅Π»Ρ; Π΄ΠΎΠ±Π°Π²Π΅Π½Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Π½Π° Π·Π°Π³Π»Π°Π²ΠΊΠ°ΡΠ° Π½Π° ΡΡΡΠ²ΡΡΠ°; ΠΡΠ²Π΅Π΄Π΅Π½Π° Π΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π·Π° Π΄ΡΠ±Π»ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ, Π·Π°Π΄Π°Π΄Π΅Π½ΠΈ ΡΡΠ΅Π· js_set.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru