ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ Π½Π°Ρ Π·Π°ΠΊΠ°Π·ΡΠΈΠΊ, ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡ ΠΏΡΠΎΠ΄ΡΠΊΡ ΡΠ΅ΡΠ΅Π· ΠΏΠ°ΡΡΠ½Π΅ΡΡΠΊΡΡ ΡΠ΅ΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΡΡΠΏΠ½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ-ΠΌΠ°Π³Π°Π·ΠΈΠ½Ρ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½Ρ ΡΠΎ ΡΠ»ΡΠΆΠ±ΠΎΠΉ Π΄ΠΎΡΡΠ°Π²ΠΊΠΈ β Π²Ρ Π·Π°ΠΊΠ°Π·ΡΠ²Π°Π΅ΡΠ΅ ΡΠΎΠ²Π°Ρ ΠΈ Π²ΡΠΊΠΎΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ ΡΡΠ΅ΠΊΠΈΠ½Π³ΠΎΠ²ΡΠΉ Π½ΠΎΠΌΠ΅Ρ ΠΏΠΎΡΡΠ»ΠΊΠΈ. ΠΡΡΠ³ΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ β Π²ΠΌΠ΅ΡΡΠ΅ Ρ Π°Π²ΠΈΠ°Π±ΠΈΠ»Π΅ΡΠΎΠΌ Π²Ρ ΠΏΠΎΠΊΡΠΏΠ°Π΅ΡΠ΅ ΡΡΡΠ°Ρ ΠΎΠ²ΠΊΡ ΠΈΠ»ΠΈ Π±ΠΈΠ»Π΅Ρ Π½Π° Π°ΡΡΠΎΡΠΊΡΠΏΡΠ΅ΡΡ.
ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΎΠ΄ΠΈΠ½ API, ΠΊΠΎΡΠΎΡΡΠΉ Π½ΡΠΆΠ½ΠΎ Π²ΡΠ΄Π°ΡΡ ΠΏΠ°ΡΡΠ½Π΅ΡΠ°ΠΌ ΡΠ΅ΡΠ΅Π· API Gateway. ΠΡΡ Π·Π°Π΄Π°ΡΡ ΠΌΡ ΠΈ ΡΠ΅ΡΠΈΠ»ΠΈ. Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΡΠ°ΡΡΠΊΠ°ΠΆΠ΅ΠΌ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ.
ΠΠ°Π½ΠΎ: ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠ° ΠΈ API-ΠΏΠΎΡΡΠ°Π» Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ, Π³Π΄Π΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½Ρ, ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΈ Ρ.ΠΏ. ΠΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ΄ΠΎΠ±Π½ΡΠΉ ΠΈ Π½Π°Π΄Π΅ΠΆΠ½ΡΠΉ API Gateway. Π ΠΏΡΠΎΡΠ΅ΡΡΠ΅ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ
- ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ,
- ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊ API,
- ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΊΠΎΠ½Π΅ΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ,
- ΡΡΡΡ Π±ΠΈΠ·Π½Π΅Ρ-ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ.
Π ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΊΠ°ΠΆΠ΅ΠΌ ΠΎ Π½Π°ΡΠ΅ΠΌ ΠΎΠΏΡΡΠ΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ API Gateway, Π² Ρ
ΠΎΠ΄Π΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΌΡ ΡΠ΅ΡΠ°Π»ΠΈ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π·Π°Π΄Π°ΡΠΈ:
- Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ,
- Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ,
- ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π·Π°ΠΏΡΠΎΡΠ°,
- ΠΏΡΠΎΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π°ΠΏΡΠΎΡΠ°,
- ΠΏΠΎΡΡΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΎΡΠ²Π΅ΡΠ°.
ΠΡΡΡ Π΄Π²Π° Π²ΠΈΠ΄Π° API-ΠΌΠ΅Π½Π΅Π΄ΠΆΠΌΠ΅Π½ΡΠ°:
1. Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ. ΠΠ΅ΡΠ΅Π΄ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠ΅ΡΡΠΈΡΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, Π·Π°ΡΠ΅ΠΌ ΠΎΠΏΠ»Π°ΡΠΈΠ²Π°Π΅Ρ ΠΈ Π²ΡΡΡΠ°ΠΈΠ²Π°Π΅Ρ Π½Π° ΡΠ²ΠΎΠΉ ΡΠ°ΠΉΡ. Π§Π°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΈΠΌ ΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π² ΠΌΠ°Π»ΠΎΠΌ ΠΈ ΡΡΠ΅Π΄Π½Π΅ΠΌ Π±ΠΈΠ·Π½Π΅ΡΠ΅.
2. ΠΡΡΠΏΠ½ΡΠΉ B2B API Management, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ ΡΠ½Π°ΡΠ°Π»Π° ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π±ΠΈΠ·Π½Π΅Ρ-ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ, ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΏΠ°ΡΡΠ½Π΅ΡΠΎΠΌ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Ρ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ½ΡΠΌ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΡΡΠ²ΠΎΠΌ, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΠΊ API. Π ΡΠΆΠ΅ ΠΏΠΎΡΠ»Π΅ ΡΠ»Π°ΠΆΠΈΠ²Π°Π½ΠΈΡ Π²ΡΠ΅Ρ ΡΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΡΡΠ΅ΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΡΠ΅ΡΡΠΎΠ²ΡΠΉ Π΄ΠΎΡΡΡΠΏ, ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π²ΡΡ ΠΎΠ΄ΠΈΡ Π² ΠΏΡΠΎΠ΄. ΠΠΎ ΡΡΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π±Π΅Π· ΡΠΏΡΠ°Π²Π»Π΅Π½ΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ.
ΠΠ°ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅
Π ΡΡΠΎΠΉ ΡΠ°ΡΡΠΈ ΡΠ°ΡΡΠΊΠ°ΠΆΠ΅ΠΌ ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ API Gateway.
ΠΠΎΠ½Π΅ΡΠ½ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΠΎΠ³ΠΎ ΡΠ»ΡΠ·Π° ΠΊ API β ΠΏΠ°ΡΡΠ½ΡΡΡ Π½Π°ΡΠ΅Π³ΠΎ Π·Π°ΠΊΠ°Π·ΡΠΈΠΊΠ°. ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ Ρ Π½Π°Ρ ΡΠΆΠ΅ Ρ ΡΠ°Π½ΡΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΡ. ΠΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π»ΠΈΡΡ ΡΠ°ΡΡΠΈΡΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ, ΠΎΡΠΌΠ΅ΡΠ°Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ»ΡΠ·Ρ. Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, Π½ΡΠΆΠ΅Π½ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΡΠ΅ΠΌΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ.
ΠΠ΅Π·ΡΡΠ»ΠΎΠ²Π½ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π²Π·ΡΡΡ ΠΊΠ°ΠΊΠΎΠ΅-Π½ΠΈΠ±ΡΠ΄Ρ Π³ΠΎΡΠΎΠ²ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π·Π°Π΄Π°ΡΠΈ API Management ΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ API Gateway Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°ΠΊΠΈΠΌ ΠΌΠΎΠ³Π»ΠΎ Π±ΡΡΡ
Π’ΠΎ, ΡΡΠΎ ΠΌΡ Π½Π°Π·ΡΠ²Π°Π΅ΠΌ API Gateway β ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΠΎΠ΄Π° ΠΏΡΠΎΠΊΡΠΈ. Π’ΡΡ Ρ Π½Π°Ρ ΠΎΠΏΡΡΡ Π±ΡΠ» Π²ΡΠ±ΠΎΡ β ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ²ΠΎΠΉ ΠΏΡΠΎΠΊΡΠΈ, Π° ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ±ΡΠ°ΡΡ ΡΠΆΠ΅ ΡΡΠΎ-ΡΠΎ Π³ΠΎΡΠΎΠ²ΠΎΠ΅. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΡ ΠΏΠΎΡΠ»ΠΈ Π²ΡΠΎΡΡΠΌ ΠΏΡΡΡΠΌ ΠΈ Π²ΡΠ±ΡΠ°Π»ΠΈ ΡΠ²ΡΠ·ΠΊΡ nginx+Lua. ΠΠΎΡΠ΅ΠΌΡ? ΠΠ°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ Π±ΡΠ» Π½Π°Π΄Π΅ΠΆΠ½ΡΠΉ, ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ software, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠΈΠΉ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅. ΠΡ Π½Π΅ Ρ ΠΎΡΠ΅Π»ΠΈ ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΠΈ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΡ Π±ΠΈΠ·Π½Π΅Ρ-Π»ΠΎΠ³ΠΈΠΊΠΈ, ΠΈ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΡ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠΊΡΠΈ.
Π£ Π»ΡΠ±ΠΎΠ³ΠΎ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅ΡΠ° Π΅ΡΡΡ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π·Π°ΠΏΡΠΎΡΠ°. Π ΡΠ»ΡΡΠ°Π΅ nginx ΠΎΠ½ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
(ΡΡ
Π΅ΠΌΠ° ΠΈΠ·
ΠΠ°ΡΠ΅ΠΉ ΡΠ΅Π»ΡΡ Π±ΡΠ»ΠΎ Π²ΡΡΡΠΎΠΈΡΡΡΡ Π² ΡΡΠΎΡ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ Π² ΡΠΎΡ ΠΌΠΎΠΌΠ΅Π½Ρ, Π³Π΄Π΅ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ Π·Π°ΠΏΡΠΎΡ.
ΠΡ Ρ ΠΎΡΠΈΠΌ ΡΠΎΠ·Π΄Π°ΡΡ transparent proxy, ΡΡΠΎΠ±Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ Π·Π°ΠΏΡΠΎΡ ΠΎΡΡΠ°Π²Π°Π»ΡΡ ΡΠ°ΠΊΠΈΠΌ, ΠΊΠ°ΠΊΠΈΠΌ ΠΈ ΠΏΡΠΈΡΡΠ». ΠΡ Π»ΠΈΡΡ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΡΠ΅ΠΌ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌΡ API, ΠΏΠΎΠΌΠΎΠ³Π°Π΅ΠΌ Π·Π°ΠΏΡΠΎΡΡ Π΄ΠΎΠ±ΡΠ°ΡΡΡΡ Π΄ΠΎ Π½Π΅Π³ΠΎ. Π ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ Π·Π°ΠΏΡΠΎΡ Π±ΡΠ» Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΠΌ, ΠΎΡΠΈΠ±ΠΊΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ ΠΊΠΎΠ½Π΅ΡΠ½ΡΠΉ API, Π½ΠΎ Π½Π΅ ΠΌΡ. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½Π°Ρ ΠΏΡΠΈΡΠΈΠ½Π°, ΠΏΠΎΡΠ΅ΠΌΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡΠΊΠ»ΠΎΠ½ΠΈΡΡ Π·Π°ΠΏΡΠΎΡ β ΠΈΠ·-Π·Π° ΠΎΡΡΡΡΡΡΠ²ΠΈΡ Π΄ΠΎΡΡΡΠΏΠ° Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°.
ΠΠ»Ρ nginx ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ
ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ nginxβa (Π°Π½Π°Π»ΠΎΠ³ΠΈΡ route ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ), Π³Π΄Π΅ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π²ΡΡ ΡΠ°Π±ΠΎΡΠ°, Π²ΠΏΠΎΠ»Π½Π΅ ΠΏΠΎΠ½ΡΡΠ½Π°Ρ. ΠΡΠΈΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½Π° Π·Π΄Π΅ΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π° β post_action.
location /middleware {
more_clear_input_headers Accept-Encoding;
lua_need_request_body on;
rewrite_by_lua_file 'middleware/rewrite.lua';
access_by_lua_file 'middleware/access.lua';
proxy_pass https://someurl.com;
body_filter_by_lua_file 'middleware/body_filter.lua';
post_action /process_session;
}
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ Π² ΡΡΠΎΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ:
more_clear_input_headers β ΠΎΡΠΈΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΊΠ°Π·Π°Π½Π½ΡΡ
ΠΏΠΎΡΠ»Π΅ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ Ρ
ΡΠ΄Π΅ΡΠΎΠ².
lua_need_request_body β ΡΠ΅Π³ΡΠ»ΠΈΡΡΠ΅Ρ, ΡΠ»Π΅Π΄ΡΠ΅Ρ Π»ΠΈ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠ΅ ΡΠ΅Π»ΠΎ Π·Π°ΠΏΡΠΎΡΠ° ΠΏΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ rewrite/access/access_by_lua ΠΈΠ»ΠΈ Π½Π΅Ρ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ nginx Π½Π΅ ΡΠΈΡΠ°Π΅Ρ ΡΠ΅Π»ΠΎ Π·Π°ΠΏΡΠΎΡΠ° ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, ΠΈ Π΅ΡΠ»ΠΈ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΊ Π½Π΅ΠΌΡ Π΄ΠΎΡΡΡΠΏ, ΡΠΎ Π΄Π°Π½Π½Π°Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠΌΠ΅ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ on.
rewrite_by_lua_file β ΠΏΡΡΡ Π΄ΠΎ ΡΠΊΡΠΈΠΏΡΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠΏΠΈΡΠ°Π½Π° Π»ΠΎΠ³ΠΈΠΊΠ° Π΄Π»Ρ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π·Π°ΠΏΡΠΎΡΠ°
access_by_lua_file β ΠΏΡΡΡ Π΄ΠΎ ΡΠΊΡΠΈΠΏΡΠ°, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠΏΠΈΡΠ°Π½Π° Π»ΠΎΠ³ΠΈΠΊΠ°, ΠΏΡΠΎΠ²Π΅ΡΡΡΡΠ°Ρ Π½Π°Π»ΠΈΡΠΈΠ΅ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ΅ΡΡΡΡΡ.
proxy_pass β url, Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠΊΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Π·Π°ΠΏΡΠΎΡ.
body_filter_by_lua_file β ΠΏΡΡΡ Π΄ΠΎ ΡΠΊΡΠΈΠΏΡΠ°, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠΏΠΈΡΠ°Π½Π° Π»ΠΎΠ³ΠΈΠΊΠ° Π΄Π»Ρ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ Π·Π°ΠΏΡΠΎΡΠ° ΠΏΠ΅ΡΠ΅Π΄ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΊΠ»ΠΈΠ΅Π½ΡΡ.
Π, Π½Π°ΠΊΠΎΠ½Π΅Ρ, post_action β ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎ Π½Π΅Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π°, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π΅ΡΡ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΡΠ²Π΅Ρ ΠΎΡΠ΄Π°Π½ ΠΊΠ»ΠΈΠ΅Π½ΡΡ.
ΠΠ°Π»Π΅Π΅ ΡΠ°ΡΡΠΊΠ°ΠΆΠ΅ΠΌ ΠΏΠΎ ΠΏΠΎΡΡΠ΄ΠΊΡ, ΠΊΠ°ΠΊ ΠΌΡ ΡΠ΅ΡΠ°Π»ΠΈ ΡΠ²ΠΎΠΈ Π·Π°Π΄Π°ΡΠΈ.
ΠΠ²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ/Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΈ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π·Π°ΠΏΡΠΎΡΠ°
ΠΠ²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ
ΠΠ²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ ΠΈ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΌΡ ΠΏΠΎΡΡΡΠΎΠΈΠ»ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π΄ΠΎΡΡΡΠΏΠΎΠ² ΠΏΠΎ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΡ. ΠΡΡΡ ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΉ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ. ΠΠ°ΠΆΠ΄ΠΎΠΌΡ Π½ΠΎΠ²ΠΎΠΌΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡ Π·Π°ΠΊΠ°Π·ΡΠΈΠΊΠ° Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ Π΅Π³ΠΎ Π»ΠΈΡΠ½ΡΠΉ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ, Ρ ΠΊΠΎΡΠΎΡΡΠΌ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ API. ΠΡΠΎΡ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΡΡΡ Π² ΡΠ΅ΠΊΡΠΈΠΈ server Π½Π°ΡΡΡΠΎΠ΅ΠΊ nginx.
ssl on;
ssl_certificate /usr/local/openresty/nginx/ssl/cert.pem;
ssl_certificate_key /usr/local/openresty/nginx/ssl/cert.pem;
ssl_client_certificate /usr/local/openresty/nginx/ssl/ca.crt;
ssl_verify_client on;
ΠΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡ
ΠΠΎΠΆΠ΅Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ ΡΠΏΡΠ°Π²Π΅Π΄Π»ΠΈΠ²ΡΠΉ Π²ΠΎΠΏΡΠΎΡ: ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ Ρ ΡΠ΅ΡΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ, Π΅ΡΠ»ΠΈ ΠΌΡ Π²Π½Π΅Π·Π°ΠΏΠ½ΠΎ Π·Π°Ρ ΠΎΡΠ΅Π»ΠΈ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ Π΅Π³ΠΎ ΠΎΡ ΡΠΈΡΡΠ΅ΠΌΡ? ΠΠ΅ ΠΏΠ΅ΡΠ΅Π²ΡΠΏΡΡΠΊΠ°ΡΡ ΠΆΠ΅ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΡ Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ².
Π’Π°ΠΊ ΠΌΡ ΠΏΠ»Π°Π²Π½ΠΎ ΠΈ ΠΏΠΎΠ΄ΠΎΡΠ»ΠΈ ΠΊ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ Π·Π°Π΄Π°ΡΠ΅ β ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π·Π°ΠΏΡΠΎΡΠ°. ΠΡΡ ΠΎΠ΄Π½ΡΠΉ Π·Π°ΠΏΡΠΎΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, Π²ΠΎΠΎΠ±ΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ, Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π²Π°Π»ΠΈΠ΄Π½ΡΠΌ Π΄Π»Ρ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΠ΄Π½Π° ΠΈΠ· Π·Π°Π΄Π°Ρ ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ Π΄ΠΎΠΏΠΈΡΠ°ΡΡ Π² Π·Π°ΠΏΡΠΎΡ Π½Π΅Π΄ΠΎΡΡΠ°ΡΡΠΈΠ΅ ΡΠ°ΡΡΠΈ, ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ Π΅Π³ΠΎ Π²Π°Π»ΠΈΠ΄Π½ΡΠΌ. Π‘ΠΎΠ»Ρ Π² ΡΠΎΠΌ, ΡΡΠΎ Π½Π΅Π΄ΠΎΡΡΠ°ΡΡΠΈΠ΅ Π΄Π°Π½Π½ΡΠ΅ β ΡΠ°Π·Π½ΡΠ΅ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°. ΠΡ Π·Π½Π°Π΅ΠΌ, ΡΡΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡ ΠΊ Π½Π°ΠΌ Ρ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΠΌ, Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π²Π·ΡΡΡ ΠΎΡΠΏΠ΅ΡΠ°ΡΠΎΠΊ ΠΈ Π²ΡΡΡΠ½ΡΡΡ ΠΈΠ· Π±Π°Π·Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°.
ΠΡΠ»ΠΈ Π² ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΎΡ Π½Π°ΡΠ΅Π³ΠΎ ΡΠ΅ΡΠ²ΠΈΡΠ°, Π΅Π³ΠΎ Π΄Π°Π½Π½ΡΠ΅ ΠΏΡΠΎΠΏΠ°Π΄ΡΡ ΠΈΠ· Π±Π°Π·Ρ ΠΈ ΠΎΠ½ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ Π΄Π΅Π»Π°ΡΡ.
Π Π°Π±ΠΎΡΠ° Ρ Π΄Π°Π½Π½ΡΠΌΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°
ΠΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ Π²ΡΡΠΎΠΊΡΡ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π΄Π°Π½Π½ΡΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°. Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΏΠ΅ΡΠ²ΠΎΠΈΡΡΠΎΡΠ½ΠΈΠΊ ΡΡΠΈΡ Π΄Π°Π½Π½ΡΡ β ΡΡΠΎΡΠΎΠ½Π½ΠΈΠΉ ΡΠ΅ΡΠ²ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ Π±Π΅ΡΠΏΠ΅ΡΠ΅Π±ΠΎΠΉΠ½ΡΡ ΠΈ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π²ΡΡΠΎΠΊΡΡ ΡΠΊΠΎΡΠΎΡΡΡ ΡΠ°Π±ΠΎΡΡ.
ΠΠΎΡΡΠΎΠΌΡ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ Π²ΡΡΠΎΠΊΡΡ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΡ Π΄Π°Π½Π½ΡΡ
ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ². Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° ΠΌΡ Π²ΡΠ±ΡΠ°Π»ΠΈ
- Π±ΡΡΡΡΡΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊ Π΄Π°Π½Π½ΡΠΌ,
- Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ»Π°ΡΡΠ΅Ρ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π½ΠΎΠ΄ Ρ ΡΠ΅ΠΏΠ»ΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ Π½Π° ΡΠ°Π·Π½ΡΡ Π½ΠΎΠ΄Π°Ρ Π΄Π°Π½Π½ΡΠΌΠΈ.
ΠΡ ΠΏΠΎΡΠ»ΠΈ ΠΏΠΎ ΡΠ°ΠΌΠΎΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈ Π΄ΠΎΡΡΠ°Π²ΠΊΠΈ Π΄Π°Π½Π½ΡΡ Π² ΠΊΡΡ:
Π Π°Π±ΠΎΡΠ° Ρ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ Π² ΡΠ°ΠΌΠΊΠ°Ρ
ΡΠ΅ΡΡΠΈΠΉ ΠΈ Π΅ΡΡΡ Π»ΠΈΠΌΠΈΡ Π½Π° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ. ΠΡΠ»ΠΈ ΠΆΠ΅ ΠΊΠ»ΠΈΠ΅Π½Ρ Π½Π΅ Π·Π°ΠΊΡΡΠ» ΡΠ΅ΡΡΠΈΡ, ΡΡΠΎ ΠΏΡΠΈΠ΄ΡΡΡΡ Π΄Π΅Π»Π°ΡΡ Π½Π°ΠΌ.
ΠΠ°Π½Π½ΡΠ΅ ΠΎΠ± ΠΎΡΠΊΡΡΡΠΎΠΉ ΡΠ΅ΡΡΠΈΠΈ ΠΏΡΠΈΡ ΠΎΠ΄ΡΡ ΠΎΡ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ Lua. ΠΡ ΡΠ΅ΡΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Hazelcast Π΄Π»Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΡΠΈΡ Π΄Π°Π½Π½ΡΡ Π΄ΠΆΠΎΠ±ΠΈΠΊΠΎΠΌ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΌ Π½Π° .NET. ΠΠ°ΡΠ΅ΠΌ Ρ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ½ΠΎΡΡΡΡ ΠΌΡ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ ΠΏΡΠ°Π²ΠΎ Π½Π° ΠΆΠΈΠ·Π½Ρ ΠΎΡΠΊΡΡΡΡΡ ΡΠ΅ΡΡΠΈΠΉ ΠΈ Π·Π°ΠΊΡΡΠ²Π°Π΅ΠΌ ΠΏΡΠΎΡΡΡ ΡΠΈΠ΅.
ΠΠΎΡΡΡΠΏ ΠΊ Hazelcast ΠΈ ΠΈΠ· Lua, ΠΈ ΠΈΠ· .NET
ΠΠ»ΠΈΠ΅Π½ΡΠΎΠ² Π½Π° Lua Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Hazelcast Π½Π΅Ρ, Π½ΠΎ Ρ Hazelcast Π΅ΡΡΡ REST API, ΠΊΠΎΡΠΎΡΡΠΌ ΠΌΡ ΠΈ ΡΠ΅ΡΠΈΠ»ΠΈ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ. ΠΠ»Ρ .NET ΠΆΠ΅ Π΅ΡΡΡ
ΠΡΠΈ ΡΠΎΡ
ΡΠ°Π½Π΅Π½ΠΈΠΈ Π΄Π°Π½Π½ΡΡ
ΡΠ΅ΡΠ΅Π· REST ΠΈ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΠΈ ΡΠ΅ΡΠ΅Π· .NET ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠ°Π·Π½ΡΠ΅ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΡΠ΄Π΅ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΡ. ΠΠΎΡΡΠΎΠΌΡ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ ΡΠ΅ΡΠ΅Π· REST, Π° Π΄ΠΎΡΡΠ°ΡΡ ΡΠ΅ΡΠ΅Π· .NET client ΠΈ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ.
ΠΡΠ»ΠΈ Π±ΡΠ΄ΡΡ Π·Π°ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΎΠ²Π°Π½Π½ΡΠ΅, ΡΠΎ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΡΠ°ΡΡΠΊΠ°ΠΆΠ΅ΠΌ ΠΎΠ± ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ΅ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ ΡΡΠ°ΡΡΠ΅. Π‘ΠΏΠΎΠΉΠ»Π΅Ρ β Π½Π° ΡΡ Π΅ΠΌΠΊΠ΅.
ΠΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³
ΠΠ°Ρ ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΡΠΉ ΡΡΠ°Π½Π΄Π°ΡΡ Π΄Π»Ρ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΡΠ΅Π· .NET β Serilog, Π²ΡΠ΅ Π»ΠΎΠ³ΠΈ Π² ΠΈΡΠΎΠ³Π΅ ΠΏΠΎΠΏΠ°Π΄Π°ΡΡ Π² Elasticsearch, ΠΈΡ
Π°Π½Π°Π»ΠΈΠ· Π²Π΅Π΄ΡΠΌ ΡΠ΅ΡΠ΅Π· KibanΠ°. ΠΠ΅ΡΡΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ Ρ
ΠΎΡΠ΅Π»ΠΎΡΡ ΡΠ΄Π΅Π»Π°ΡΡ ΠΈ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ
API Gateway ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² K8S, ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΡ ΡΠ΅ΡΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Ρ fluentd Π² ΡΡ ΠΆΠ΅ ΡΠ°ΠΌΡΡ ΠΏΠΎΠ΄y, ΡΡΠΎΠ±Ρ ΠΏΠΈΡΠ°ΡΡ Π»ΠΎΠ³ΠΈ Π² ΠΈΠΌΠ΅ΡΡΠΈΠΉΡΡ ΠΎΡΠΊΡΡΡΡΠΉ tcp port fluentd.
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π»ΠΈ, ΠΊΠ°ΠΊ Π±ΡΠ΄Π΅Ρ Π²Π΅ΡΡΠΈ ΡΠ΅Π±Ρ fluentd, Π΅ΡΠ»ΠΈ Ρ Π½Π΅Π³ΠΎ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠ²ΡΠ·ΠΈ Ρ Elasticsearch. Π ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π²ΡΡ ΡΡΡΠΎΠΊ Π² ΡΠ»ΡΠ· Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΠΎ ΡΠ»ΠΈ Π·Π°ΠΏΡΠΎΡΡ, Π²ΠΎ fluentd ΠΎΡΠΏΡΠ°Π²Π»ΡΠ»ΠΈΡΡ Π»ΠΎΠ³ΠΈ, Π½ΠΎ Ρ fluentd Π±ΡΠ» Π·Π°Π±Π°Π½Π΅Π½ IP Elastic. ΠΠΎΡΠ»Π΅ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΠ²ΡΠ·ΠΈ fluentd ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π³Π½Π°Π» Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ Π²ΡΠ΅ Π»ΠΎΠ³ΠΈ Π² Elastic.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΡΠ±ΡΠ°Π½Π½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΊ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ» Π½Π°ΠΌ Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΡΠ΅Π°Π»ΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠΉ ΠΏΡΠΎΠ΄ΡΠΊΡ Π² Π±ΠΎΠ΅Π²ΡΡ ΡΡΠ΅Π΄Ρ Π²ΡΠ΅Π³ΠΎ Π·Π° 2.5 ΠΌΠ΅ΡΡΡΠ°.
ΠΡΠ»ΠΈ ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡΠ΄Ρ Π²Π°ΠΌ Π΄ΠΎΠ²Π΅Π΄ΡΡΡΡ Π·Π°Π½ΠΈΠΌΠ°ΡΡΡΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΌΠΈ Π²Π΅ΡΠ°ΠΌΠΈ, ΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΡΠ΅ΡΠΊΠΎ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊΡΡ Π·Π°Π΄Π°ΡΡ Π²Ρ ΡΠ΅ΡΠ°Π΅ΡΠ΅ ΠΈ ΡΡΠΎ ΠΈΠ· ΡΠ΅ΡΡΡΡΠΎΠ² Ρ Π²Π°Ρ ΡΠΆΠ΅ Π΅ΡΡΡ. ΠΡΠ΄ΡΡΠ΅ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½Ρ ΠΊ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡΠΌ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ Ρ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ API.
ΠΠΎΠΉΠΌΠΈΡΠ΅ Π΄Π»Ρ ΡΠ΅Π±Ρ, ΡΡΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Π²Ρ ΡΠΎΠ±ΠΈΡΠ°Π΅ΡΠ΅ΡΡ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ β ΡΠΎΠ»ΡΠΊΠΎ Π±ΠΈΠ·Π½Π΅Ρ-Π»ΠΎΠ³ΠΈΠΊΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΈΠ»ΠΈ, ΠΊΠ°ΠΊ ΠΌΠΎΠ³Π»ΠΎ Π±ΡΡΡ Π² Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅, ΠΏΡΠΎΠΊΡΠΈ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ. ΠΠ΅ Π·Π°Π±ΡΠ²Π°ΠΉΡΠ΅, ΡΡΠΎ Π²ΡΡ, ΡΡΠΎ Π²Ρ ΡΠ΄Π΅Π»Π°Π΅ΡΠ΅ ΡΠ°ΠΌΠΈ, Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π²ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠΈ ΡΡΠ°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΎ.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com