ΠΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½ Π΅ ΠΏΡΡΠ²ΠΈΡΡ Π±ΡΠΎΠΉ Π½Π° Π²ΠΈΡΠΎΠΊΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΈΡ HTTP ΡΡΡΠ²ΡΡ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ-ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π½ΠΈΡ ΠΏΡΠΎΠΊΡΠΈ ΡΡΡΠ²ΡΡ Angie, ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ ΠΎΡ Nginx ΠΎΡ Π΅ΠΊΠΈΠΏ Π±ΠΈΠ²ΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΠΊΠΎΠΈΡΠΎ Π½Π°ΠΏΡΡΠ½Π°Ρ Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ° F5 Network. ΠΠ·Ρ ΠΎΠ΄Π½ΠΈΡΡ ΠΊΠΎΠ΄ Π½Π° Angie Π΅ Π½Π°Π»ΠΈΡΠ΅Π½ ΠΏΠΎΠ΄ BSD Π»ΠΈΡΠ΅Π½Π·.
ΠΠ° ΠΏΡΠΈΠ΄ΡΡΠΆΠ°Π²Π°Π½Π΅ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π°Π½Π΅ Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅ Π½Π° Nginx Π² Π ΡΡΠΊΠ°ΡΠ° ΡΠ΅Π΄Π΅ΡΠ°ΡΠΈΡ Π΅ ΡΡΠ·Π΄Π°Π΄Π΅Π½Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ βΠ£Π΅Π±-ΡΡΡΠ²ΡΡβ, ΠΊΠΎΡΡΠΎ Π΅ ΠΏΠΎΠ»ΡΡΠΈΠ»Π° ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΈΠΈ Π½Π° ΡΡΠΎΠΉΠ½ΠΎΡΡ 1 ΠΌΠΈΠ»ΠΈΠΎΠ½ Π΄ΠΎΠ»Π°ΡΠ°. ΠΡΠΆΠ΅ΡΠ΅, ΡΡΠΎΡΠ½ΠΎΠ²Π°ΡΠ΅Π»ΠΈ Π½Π° Π½ΠΎΠ²Π°ΡΠ° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ, ΡΠ°: ΠΠ°Π»Π΅Π½ΡΠΈΠ½ ΠΠ°ΡΡΠ΅Π½Π΅Π² (Π»ΠΈΠ΄Π΅Ρ Π½Π° Π΅ΠΊΠΈΠΏΠ°, ΡΠ°Π·Π²ΠΈΠ²Π°Ρ ΠΏΡΠΎΠ΄ΡΠΊΡΠ° Nginx Unit), ΠΠ²Π°Π½ ΠΠΎΠ»ΡΡΠ½ΠΎΠ² (Π±ΠΈΠ²Ρ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΠΈΡΠ΅Π» Π½Π° ΡΡΠΎΠ½ΡΠ΅Π½Π΄ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π½Π° Rambler ΠΈ Mail.Ru), ΠΠ»Π΅Π³ ΠΠ°ΠΌΠΎΠ½ΡΠΎΠ² (ΡΡΠΊΠΎΠ²ΠΎΠ΄ΠΈΡΠ΅Π» Π½Π° Π΅ΠΊΠΈΠΏΠ° Π·Π° ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° NGINX Inc) ΠΈ Π ΡΡΠ»Π°Π½ ΠΡΠΌΠΈΠ»ΠΎΠ² (ru@FreeBSD.org). ΠΠΈΡΠ΅ΠΊΡΠΎΡ Π½Π° Π½ΠΎΠ²Π°ΡΠ° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ Π΅ Π½Π°Π·Π½Π°ΡΠ΅Π½ ΠΠ°ΡΡ ΠΠ±Π°ΡΠΌΠΈΡΠ·ΠΎΠ΅Π², Π±ΠΈΠ²Ρ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡ Π½Π° lenta.ru. ΠΠ³ΠΎΡ Π‘ΡΡΠΎΠ΅Π², ΠΎΡΠ½ΠΎΠ²Π°ΡΠ΅Π» Π½Π° Nginx, Π½Π΅ ΡΡΠ°ΡΡΠ²Π° Π² ΠΏΡΠΎΠ΅ΠΊΡΠ°.
ΠΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° Angie 1.0.0 Π΅ ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ ΠΎΡ ΠΊΠΎΠ΄Π° Π½Π° nginx 1.23.2 ΠΈ Π²ΠΊΠ»ΡΡΠ²Π° ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ:
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° HTTP RESTful ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π·Π° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΠΎΡΠ½ΠΎΠ²Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΡΠ΅Π± ΡΡΡΠ²ΡΡΠ° ΠΈ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ° Π·Π° ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΡΠ΅ Π²ΡΡΠ·ΠΊΠΈ, Π·ΠΎΠ½ΠΈ Π½Π° ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½Π° ΠΏΠ°ΠΌΠ΅Ρ, HTTP Π·Π°ΡΠ²ΠΊΠΈ, ΠΊΠ΅ΡΠΈΡΠ°Π½Π΅ Π½Π° HTTP ΠΎΡΠ³ΠΎΠ²ΠΎΡΠΈ, DNS Π·Π°ΡΠ²ΠΊΠΈ, ΡΡΠ·Π΄Π°Π΄Π΅Π½ΠΈ ΠΎΡ ΠΌΠΎΠ΄ΡΠ»Π° βstreamβ Π·Π° TCP/UDP ΡΠ΅ΡΠΈΠΈ ΠΈ Π·ΠΎΠ½ΠΈ Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ, ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΡΡΠ΅Π· ΠΌΠΎΠ΄ΡΠ»ΠΈΡΠ΅ limit_conn ΠΈ limit_req. Π‘ΡΠ°ΡΠΈΡΡΠΈΠΊΠ°ΡΠ° ΡΠ΅ ΠΈΠ·Π²Π΅ΠΆΠ΄Π° Π² JSON ΡΠΎΡΠΌΠ°Ρ. ΠΠ° Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π΅ Π½Π° HTTP RESTful ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄Π΅Π½Π° Π½ΠΎΠ²Π° Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π° βapiβ.
- Π ΠΌΠΎΠ΄ΡΠ»Π° βhttpβ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π° βstatus_zoneβ, ΠΊΠΎΡΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Ρ Π·ΠΎΠ½Π° Π·Π° Π½Π°ΡΡΡΠΏΠ²Π°Π½Π΅ Π½Π° ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ° Π·Π° Π·Π°ΡΠ²ΠΊΠΈΡΠ΅, ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°Π½ΠΈ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²ΠΈΡΠ΅ βserverβ ΠΈ βlocationβ.
- Π ΠΌΠΎΠ΄ΡΠ»Π° βstreamβ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π° βstatus_zoneβ, ΠΊΠΎΡΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Ρ Π·ΠΎΠ½Π° Π·Π° Π½Π°ΡΡΡΠΏΠ²Π°Π½Π΅ Π½Π° ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ° Π·Π° TCP ΠΈ UDP ΡΠ΅ΡΠΈΠΈ.
- Π Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π°ΡΠ° βresolverβ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ βstatus_zoneβ, ΠΊΠΎΠΉΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Ρ Π·ΠΎΠ½Π° Π·Π° Π½Π°ΡΡΡΠΏΠ²Π°Π½Π΅ Π½Π° ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ° Π·Π° ΠΈΠ·ΠΏΡΠ°ΡΠ΅Π½ΠΈΡΠ΅ DNS Π·Π°ΡΠ²ΠΊΠΈ.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° $angie_version Ρ Π²Π΅ΡΡΠΈΡΡΠ° ΡΡΡΠ²ΡΡ Angie.
ΠΡ Π±ΡΠ΄Π΅ΡΠΈΡΠ΅ ΠΏΠ»Π°Π½ΠΎΠ²Π΅ ΡΠ΅ ΠΎΡΠ±Π΅Π»ΡΠ·Π²Π° Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΈΠ·Ρ
ΠΎΠ΄Π½Π°ΡΠ° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ ΠΏΡΠΈ Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ Π½Π° ΠΎΡΠ½ΠΎΠ²Π½Π° ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡ Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° Π½Π° Nginx ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Angie ΠΊΠ°ΡΠΎ Π·Π°ΠΌΠ΅ΡΡΠΈΡΠ΅Π» Π½Π° Nginx Π±Π΅Π· Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠΈΡΠ΅. Π ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Ρ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΈΡ Nginx ΡΠ΅ ΠΏΠ»Π°Π½ΠΈΡΠ° ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½ΠΎ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΎΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΡΠ°, ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ°, ΠΎΠΏΡΠΎΡΡΡΠ²Π°Π½Π΅ Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° ΠΈ Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π·Π° ΠΊΠ»ΡΡΡΠ΅ΡΠ½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
