OpenResty: ื•ื•ืขื ื“ืŸ NGINX ืฆื• ืึท ืคื•ืœ-ืคืœืขื“ื–ืฉื“ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืกืขืจื•ื•ืขืจ

OpenResty: ื•ื•ืขื ื“ืŸ NGINX ืฆื• ืึท ืคื•ืœ-ืคืœืขื“ื–ืฉื“ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืกืขืจื•ื•ืขืจืžื™ืจ ืึทืจื•ื™ืกื’ืขื‘ืŸ ื“ื™ ื˜ืจืึทื ืกืงืจื™ืคึผื˜ ืคื•ืŸ ื“ื™ ื‘ืึทืจื™ื›ื˜ ืคื•ืŸ ื“ืขืจ ืงืึธื ืคึฟืขืจืขื ืฅ HighLoad++ 2016, ื•ื•ืึธืก ืื™ื– ื’ืขื”ืืœื˜ืŸ ืื™ืŸ ืกืงืึธืœืงืึธื•ื•ืึธ ืœืขื‘ืŸ ืžืึธืกืงื•ื•ืข ืื•ื™ืฃ 7-8 ื ืื•ื•ืขืžื‘ืขืจ ืœืขืฆื˜ืข ื™ืึธืจ. ื•ื•ืœืื“ื™ืžื™ืจ ืคึผืจืึธื˜ืึทืกืึธื•ื• ื“ืขืจืฆื™ื™ืœื˜ ื•ื•ื™ ืฆื• ืคืึทืจื‘ืจื™ื™ื˜ืขืจืŸ NGINX ืคืึทื ื’ืงืฉืึทื ืึทืœื™ื˜ื™ ืžื™ื˜ OpenResty ืื•ืŸ Lua.

ื”ืขืœื ืึทืœืขืžืขืŸ, ืžื™ื™ืŸ ื ืึธืžืขืŸ ืื™ื– ื•ื•ืœืื“ื™ืžื™ืจ ืคึผืจืึธื˜ืึทืกืึธื•ื•, ืื™ืš ืึทืจื‘ืขื˜ ืคึฟืึทืจ ืคึผืึทืจืึทืœืœืขืœืก. ืื™ืš ืฐืขืœ ืืฒึทืš ื“ืขืจืฆืฒืœืŸ ืึท ื‘ื™ืกืœ ืฐืขื’ืŸ ื–ื™ืš. ืื™ืš ืคืึทืจื‘ืจืขื ื’ืขืŸ ื“ืจื™ื™ ืคืขืจื˜ืœ ืคื•ืŸ ืžื™ื™ืŸ ืœืขื‘ืŸ ืฆื• ืฉืจื™ื™ื‘ืŸ ืงืึธื“. ืื™ืš ื’ืขื•ื•ืืจืŸ ืึท ืคึผืจืึธื’ืจืึทืžื™ืกื˜ ืฆื• ื“ื™ ื”ืึทืจืฅ ืื™ืŸ ื“ื™ ืœื™ื˜ืขืจืึทืœ ื–ื™ื ืขืŸ: ืื™ืš ืžืืœ ื–ืขืŸ ืงืึธื“ ืื™ืŸ ืžื™ื™ืŸ ื—ืœื•ืžื•ืช. ื ืคืขืจื˜ืœ ืคื•ืŸ ืœืขื‘ืŸ ืื™ื– ื™ื ื“ืึทืกื˜ืจื™ืึทืœ ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’, ืฉืจื™ื™ื‘ืŸ ืงืึธื“ ื•ื•ืึธืก ื’ื™ื™ื˜ ื’ืœื™ื™ืš ืื™ืŸ ืคึผืจืึธื“ื•ืงืฆื™ืข. ืงืึธื“ ื•ื•ืึธืก ืขื˜ืœืขื›ืข ืคื•ืŸ โ€‹โ€‹ืื™ืจ ื ื•ืฆืŸ ืึธื‘ืขืจ ื˜ืึธืŸ ื ื™ื˜ ื•ื•ื™ืกืŸ ืขืก.

ืฆื• ืœืึธื–ืŸ ืื™ืจ ื•ื•ื™ืกืŸ ื•ื•ื™ ืฉืœืขื›ื˜ ืขืก ืื™ื– ื’ืขื•ื•ืขืŸ. ื•ื•ืขืŸ ืื™ืš ืื™ื– ื’ืขื•ื•ืขืŸ ืึท ื‘ื™ืกืœ ื™ื™ื ื’ืขืจ, ืื™ืš ื’ืขืงื•ืžืขืŸ ืื™ืŸ ืื•ืŸ ื–ื™ื™ ื’ืขื’ืขื‘ืŸ ืžื™ืจ ื“ื™ ืฆื•ื•ื™ื™ ื˜ืขืจืึทื‘ื™ื˜ืข ื“ืึทื˜ืึทื‘ื™ื™ืกื™ื–. ืขืก ืื™ื– ืื™ืฆื˜ ื“ืึธ ืคึฟืึทืจ ืึทืœืขืžืขืŸ ื”ื•ื™ืš ืžืึทืกืข. ืื™ืš ื‘ื™ืŸ ื’ืขื’ืื ื’ืขืŸ ืฆื• ืงืึธื ืคึฟืขืจืขื ืฆืŸ ืื•ืŸ ื’ืขืคืจืขื’ื˜: "ื’ื•ื™ืก, ื–ืึธื’ืŸ ืžื™ืจ, ืื™ืจ ื”ืึธื‘ืŸ ื’ืจื•ื™ืก ื“ืึทื˜ืŸ, ืื™ื– ืึทืœืฅ ืงื™ืœ? ื•ื•ื™ ืคื™ืœืข ื‘ืึทืกืขืก ื˜ืึธืŸ ืื™ืจ ื”ืึธื‘ืŸ ื“ืึธืจื˜? ื–ื™ื™ ื”ืึธื‘ืŸ ืžื™ืจ ื’ืขืขื ื˜ืคืขืจื˜: "ืžื™ืจ ื”ืึธื‘ืŸ 100 ื’ื™ื’ืื‘ื™ื™ื˜!" ืื™ืš ื’ืขื–ืื’ื˜: "ืงื™ืœ, 100 ื’ื™ื’ืื‘ื™ื™ื˜!" ืื•ืŸ ืื™ืš ื’ืขื“ืึทื ืง ืฆื• ื–ื™ืš ื•ื•ื™ ืฆื• ืฆื™ื›ื˜ื™ืง ืจืึทื˜ืขื•ื•ืขืŸ ื“ื™ ืคึผืึธืงืขืจ ืคึผื ื™ื. ืื™ืจ ื˜ืจืึทื›ื˜ืŸ, ื™ืึธ, ื“ื™ ื’ื™ื™ื– ื–ืขื ืขืŸ ืงื™ืœ, ืื•ืŸ ื“ืขืžืึธืœื˜ ืื™ืจ ืงื•ืžืขืŸ ืฆื•ืจื™ืง ืื•ืŸ ื˜ื™ื ืงืขืจ ืžื™ื˜ ื“ื™ ืžืึทืœื˜ื™-ื˜ืขืจืึทื‘ื™ื˜ืข ื“ืึทื˜ืึทื‘ื™ื™ืกื™ื–. ืื•ืŸ ื“ืึธืก ืื™ื– ื–ื™ื™ึทืขื ื“ื™ืง ืึท ื™ื™ื ื’ืขืจ. ืงืขื ืขืŸ ืื™ืจ ื™ืžืึทื“ื–ืฉืึทืŸ ื•ื•ืึธืก ืึท ืฉืœืึธื’ืŸ ืขืก ืื™ื–?

ืื™ืš ืงืขืŸ ืžืขืจ ื•ื•ื™ 20 ืคึผืจืึธื’ืจืึทืžืžื™ื ื’ ืฉืคืจืึทื›ืŸ. ื“ืึธืก ืื™ื– ื•ื•ืึธืก ืื™ืš ื’ืขื”ืื˜ ืฆื• ืจืขื›ืขื ืขืŸ ืื•ื™ืก ืื™ืŸ ื“ื™ ืœื•ื™ืฃ ืคื•ืŸ ืึทืจื‘ืขื˜. ื–ื™ื™ ื’ืขื‘ืŸ ืื™ืจ ืงืึธื“ ืื™ืŸ ืขืจืœืึทื ื’, ืื™ืŸ C, ืื™ืŸ C ++, ืื™ืŸ ืœื•ืึท, ืื™ืŸ ืคึผื™ื˜ื”ืึธืŸ, ืื™ืŸ ืจื•ื‘ื™, ืื™ืŸ ืขืคึผืขืก ืึทื ื“ืขืจืฉ, ืื•ืŸ ืื™ืจ ื”ืึธื‘ืŸ ืฆื• ืฉื ื™ื™ึทื“ืŸ ืขืก ืึทืœืข. ืื™ืŸ ืึทืœื’ืขืžื™ื™ืŸ, ืื™ืš ื’ืขื”ืื˜ ืฆื•. ืžืข ืŸ ื”ื ื˜ ื ื™ืฉ ื˜ ื’ืขืงืื  ื˜ ืื•ื™ืกืจืขื›ืขื ืขืŸ , ืื‘ืข ืจ ืขืคืข ืก ืืจื•ื 20 , ืื™ ื– ื“ืข ืจ ืฆื ืœ ืคืืจืœื•ื™ืจ ืŸ ื’ืขืฐืืจืŸ .

ื–ื™ื ื˜ ืึทืœืขืžืขืŸ ื“ืึธ ื•ื•ื™ื™ืกื˜ ื•ื•ืึธืก ืคึผืึทืจืึทืœืœืขืœืก ืื™ื– ืื•ืŸ ื•ื•ืึธืก ืžื™ืจ ื˜ืึธืŸ, ืื™ืš ื•ื•ืขืœ ื ื™ืฉื˜ ืจืขื“ืŸ ื•ื•ืขื’ืŸ ื•ื•ื™ ืงื™ืœ ืžื™ืจ ื–ืขื ืขืŸ ืื•ืŸ ื•ื•ืึธืก ืžื™ืจ ื˜ืึธืŸ. ืื™ืš ื•ื•ืขื˜ ื ืึธืจ ื–ืึธื’ืŸ ืื™ืจ ืึทื– ืžื™ืจ ื”ืึธื‘ืŸ 13 ืึธืคืึทืกื™ื– ืึทืจื•ื ื“ื™ ื•ื•ืขืœื˜, ืžืขืจ ื•ื•ื™ 300 ืขืžืคึผืœื•ื™ื™ื–, ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ืื™ืŸ ืžืึธืกืงื•ื•ืข, ื˜ืึทืœืœื™ื ืŸ ืื•ืŸ ืžืึทืœื˜ืึท. ืื•ื™ื‘ ืื™ืจ ื•ื•ื™ืœื˜, ืื™ืจ ืงืขื ืขืŸ ื ืขืžืขืŸ ืื•ืŸ ืžืึทืš ืฆื• ืžืึทืœื˜ืึท, ืื•ื™ื‘ ืขืก ืื™ื– ืงืึทืœื˜ ืื™ืŸ ื•ื•ื™ื ื˜ืขืจ ืื•ืŸ ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ื•ื•ืึทืจืขื ื“ื™ื™ืŸ ืฆื•ืจื™ืง.

ืกืคึผืขืฆื™ืขืœ, ืื•ื ื“ื–ืขืจ ืึธืคึผื˜ื™ื™ืœื•ื ื’ ืฉืจื™ื™ื‘ื˜ ืื™ืŸ ืคึผื™ื˜ื”ืึธืŸ 2. ืžื™ืจ ื–ืขื ืขืŸ ืื™ืŸ ื’ืขืฉืขืคื˜ ืื•ืŸ ืžื™ืจ ื”ืึธื‘ืŸ ืงื™ื™ืŸ ืฆื™ื™ึทื˜ ืฆื• ื‘ืึทืงืขื ืขืŸ ืžืึธื“ืขืจืŸ ื˜ืขืงื ืึทืœืึทื“ื–ืฉื™ื–, ืึทื–ื•ื™ ืžื™ืจ ืœื™ื™ื“ืŸ. ืžื™ืจ ื”ืึธื‘ืŸ ื“ื“ื–ืฉืึทื ื’ืึธ, ื•ื•ื™ื™ึทืœ ืขืก ื”ืื˜ ืึทืœืฅ, ืื•ืŸ ืžื™ืจ ื’ืขื ื•ืžืขืŸ ื“ื™ ื•ื™ื“ืขืคื“ื™ืง ืื•ืŸ ื”ืื˜ ืขืก ืึทื•ื•ืขืง. ืื•ื™ืš MySQL, Redis ืื•ืŸ NGINX. ืžื™ืจ ืื•ื™ืš ื”ืึธื‘ืŸ ืึท ืคึผืœืึทืฅ ืคื•ืŸ ืื ื“ืขืจืข ืงื™ืœ ืฉื˜ืึธืคึผืŸ. ืžื™ืจ ื”ืึธื‘ืŸ ืžืึธื ื’ืึธื“ื‘, ืžื™ืจ ื”ืึธื‘ืŸ ืจืึทื‘ืึทืฅ ื•ื•ืึธืก ืœื•ื™ืคืŸ ืึทืจื•ื, ืžื™ืจ ื ืึธืจ ื˜ืึธืŸ ื ื™ื˜ ื”ืึธื‘ืŸ ืขืคึผืขืก - ืึธื‘ืขืจ ื“ืึธืก ืื™ื– ื ื™ืฉื˜ ืžื™ื™ึทืŸ, ืื•ืŸ ืื™ืš ื˜ืึธืŸ ื ื™ื˜ ื˜ืึธืŸ ื“ืึธืก.

OpenResty

ืื™ืš ื”ืึธื‘ ื“ืขืจืฆืฒืœื˜ ืฐืขื’ืŸ ื–ื™ืš. ื–ืืœ ืก ื–ืขืŸ ื•ื•ืึธืก ืื™ืš ื•ื•ืขืœ ืจืขื“ืŸ ื•ื•ืขื’ืŸ ื”ื™ื™ึทื ื˜:

  • ื•ื•ืึธืก ืื™ื– OpenResty ืื•ืŸ ืžื™ื˜ ื•ื•ืึธืก ืื™ื– ืขืก ื’ืขื’ืขืกืŸ?
  • ืคืืจื•ื•ืืก ืจื™ื™ื ื•ื•ืขื ื˜ ื“ื™ ืจืึธื“ ื•ื•ืขืŸ ืžื™ืจ ื”ืึธื‘ืŸ Python, NodeJS, PHP, Go ืื•ืŸ ืื ื“ืขืจืข ืงื™ืœ ืฉื˜ืึธืคึผืŸ ื•ื•ืึธืก ืึทืœืขืžืขืŸ ืื™ื– ืฆื•ืคืจื™ื“ืŸ ืžื™ื˜?
  • ืื•ืŸ ืขื˜ืœืขื›ืข ื‘ื™ื™ืฉืคื™ืœืŸ ืคื•ืŸ ืคืึทืงื˜ื™ืฉ ืœืขื‘ืŸ. ืื™ืš ื”ืึธื‘ืŸ ืฆื• ืฉื ื™ื™ึทื“ืŸ ื“ื™ ื‘ืึทืจื™ื›ื˜ ืึท ืคึผืœืึทืฅ, ื•ื•ื™ื™ึทืœ ืื™ืš ื’ืึทื˜ ืขืก ืคึฟืึทืจ 3,5 ืฉืขื”, ืึทื–ื•ื™ ืขืก ื•ื•ืขื˜ ื–ื™ื™ืŸ ื•ื•ื™ื™ื ื™ืง ื‘ื™ื™ืฉืคื™ืœืŸ.

OpenResty ืื™ื– NGINX. ื“ืึทื ืง ืฆื• ืื™ื, ืžื™ืจ ื”ืึธื‘ืŸ ืึท ืคื•ืœ-ืคืœืขื“ื–ืฉื“ ื•ื•ืขื‘ ืกืขืจื•ื•ืขืจ, ื•ื•ืึธืก ืื™ื– ื’ืขื–ื•ื ื˜ ื’ืขืฉืจื™ื‘ืŸ, ืขืก ืึทืจื‘ืขื˜ ืฉื ืขืœ. ืื™ืš ื˜ืจืึทื›ื˜ืŸ ืจื•ื‘ึฟ ืคื•ืŸ ืื•ื ื“ื– ื ื•ืฆืŸ NGINX ืื™ืŸ ืคึผืจืึธื“ื•ืงืฆื™ืข. ืื™ืจ ืึทืœืข ื•ื•ื™ืกืŸ ืึทื– ืขืจ ืื™ื– ืฉื ืขืœ ืื•ืŸ ืงื™ืœ. ื–ื™ื™ ื’ืขืžืื›ื˜ ืงื™ืœ ืกื™ื ื˜ืฉืจืึธื ืึธื•ืก ืื™ืš / ืึธ ืื™ืŸ ืขืก, ืึทื–ื•ื™ ืžื™ืจ ื˜ืึธืŸ ื ื™ื˜ ื“ืึทืจืคึฟืŸ ืฆื• ืฆื™ืงืœ ืขืคึผืขืก ืื™ืŸ ื“ื™ ื–ืขืœื‘ืข ื•ื•ืขื’ ื•ื•ื™ ื’ืขื‘ืŸ ืื™ื– ืกื™ื™ืงืึทืœื“ ืื™ืŸ ืคึผื™ื˜ื”ืึธืŸ. ื’ืขื•ื•ืขื ื˜ ืื™ื– ืงื™ืœ, ื’ืจื•ื™ืก, ืึธื‘ืขืจ ืื•ื™ื‘ ืื™ืจ ืฉืจื™ื™ึทื‘ืŸ C-ืงืึธื“ ืื•ืŸ ืขืคึผืขืก ื’ื™ื™ื˜ ืคืึทืœืฉ ืžื™ื˜ ื’ืขื‘ืŸ, ืื™ืจ ื•ื•ืขื˜ ื–ื™ื™ืŸ ืžืฉื•ื’ืข ื“ื™ื‘ืึทื’ื™ื ื’ ืขืก. ืื™ืš ื”ืึธื‘ ื’ืขื”ืื˜ ื“ืขืจืคืึทืจื•ื ื’: ืขืก ื”ืึธื˜ ื’ืขื“ื•ื™ืขืจื˜ ืฆื•ื•ื™ื™ ื˜ืขื’ ืฆื• ืคืึทืจืฉื˜ื™ื™ืŸ ื•ื•ืึธืก ืื™ื– ืคืึทืœืฉ ื“ืึธืจื˜. ืื•ื™ื‘ ืื™ื™ื ืขืจ ื•ื•ืืœื˜ ื ื™ืฉื˜ ื’ืขื’ืจืื‘ืŸ ืคืืจ ืขื˜ืœื™ื›ืข ื•ื•ืื›ืŸ ืคืจื™ืขืจ, ื’ืขืคื•ื ืขืŸ ื“ืขื ืคืจืื‘ืœืขื, ืขืก ื’ืขืฉืจื™ื‘ืŸ ืื•ื™ืคืŸ ืื™ื ื˜ืขืจื ืขื˜, ืื•ืŸ ื’ื•ื’ืœ ื”ืื˜ ืขืก ื ื™ืฉื˜ ื’ืขืคื•ื ืขืŸ, ื•ื•ืืœื˜ืŸ ืžื™ืจ ื’ืืจ ืžืฉื•ื’ืข ื’ืขื•ื•ืืจืŸ.

NGINX ื˜ื•ื˜ ืฉื•ื™ืŸ ืงืึทื˜ืฉื™ื ื’ ืื•ืŸ ืกื˜ืึทื˜ื™ืง ืื™ื ื”ืึทืœื˜. ืื™ืจ ื˜ืึธืŸ ื ื™ื˜ ื“ืึทืจืคึฟืŸ ืฆื• ื–ืึธืจื’ ื•ื•ืขื’ืŸ ื•ื•ื™ ืฆื• ื˜ืึธืŸ ื“ืึธืก ืžืขื ื˜ืฉืœืขืš, ืึทื–ื•ื™ ืึทื– ืื™ืจ ื˜ืึธืŸ ื ื™ื˜ ืคึผืึทืžืขืœืขืš ืขืจื’ืขืฅ, ืึทื–ื•ื™ ืื™ืจ ื˜ืึธืŸ ื ื™ื˜ ืคืึทืจืœื™ืจืŸ ื“ื™ืกืงืจื™ืคึผื˜ืึธืจืก ืขืจื’ืขืฅ. Nginx ืื™ื– ื–ื™ื™ืขืจ ื‘ืึทืงื•ื•ืขื ืฆื• ืฆืขื•ื•ื™ืงืœืขืŸ, ืื™ืจ ื˜ืึธืŸ ื ื™ื˜ ื“ืึทืจืคึฟืŸ ืฆื• ื˜ืจืึทื›ื˜ืŸ ื•ื•ืขื’ืŸ ื•ื•ืึธืก ืฆื• ื ืขืžืขืŸ - WSGI, PHP-FPM, Gunicorn, Unicorn. Nginx ืื™ื– ืื™ื ืกื˜ืึทืœื™ืจืŸ, ื’ืขื’ืขื‘ืŸ ืฆื• ื“ื™ ืึทื“ืžื™ื ื™ืกื˜ืจืึทื˜ืึธืจืก, ื–ื™ื™ ื•ื•ื™ืกืŸ ื•ื•ื™ ืฆื• ืึทืจื‘ืขื˜ืŸ ืžื™ื˜ ืื™ื. Nginx ื›ืึทื ื“ืึทืœื– ืจื™ืงื•ื•ืขืก ืื™ืŸ ืึท ืกื˜ืจืึทืงื˜ืฉืขืจื“ ื•ื•ืขื’. ืื™ืš ื•ื•ืขืœ ืจืขื“ืŸ ื•ื•ืขื’ืŸ ื“ืขื ืึท ื‘ื™ืกืœ ืฉืคึผืขื˜ืขืจ. ื‘ืงื™ืฆื•ืจ, ืขืจ ื”ืื˜ ื ืคืื–ืข ื•ื•ืขืŸ ืขืจ ื”ืื˜ ื ืืจ ืื ื’ืขื ื•ืžืขืŸ ื“ื™ ื‘ืงืฉื”, ื•ื•ืขืŸ ืขืจ ื”ืื˜ ืคืจืืกืขืกื˜ ืื•ืŸ ื•ื•ืขืŸ ืขืจ ื”ืื˜ ื’ืขื’ืขื‘ืŸ ื“ืขื ืื™ื ื”ืืœื˜ ืคืืจืŸ ื‘ืื ื•ืฆืขืจ.

Nginx ืื™ื– ืงื™ืœ, ืึธื‘ืขืจ ืขืก ืื™ื– ืื™ื™ืŸ ืคึผืจืึธื‘ืœืขื: ืขืก ืื™ื– ื ื™ืฉื˜ ืคืœืขืงืกืึทื‘ืึทืœ ื’ืขื ื•ื’ ืืคื™ืœื• ืžื™ื˜ ืึทืœืข ื“ื™ ืงื™ืœ ืคึฟืขื™ึดืงื™ื™ื˜ืŸ ื•ื•ืึธืก ื“ื™ ื’ื™ื™ื– ืคึผื•ืฉื˜ ืื™ืŸ ื“ื™ ืงืึธื ืคื™ื’, ื˜ืจืึธืฅ ื“ืขื ืคืึทืงื˜ ืึทื– ืขืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ืงืึทืกื˜ืึทืžื™ื™ื–ื“. ื“ืขื ืžืึทื›ื˜ ืื™ื– ื ื™ืฉื˜ ื’ืขื ื•ื’. ื“ืขืจื™ื‘ืขืจ, ื“ื™ ื’ื™ื™ื– ืคื•ืŸ ื˜ืึทืึธื‘ืึทืึธ ืึทืžืึธืœ, ืื™ืš ื˜ืจืึทื›ื˜ืŸ ื•ื•ืขื’ืŸ ืึทื›ื˜ ื™ืืจ ืฆื•ืจื™ืง, ื’ืขื‘ื•ื™ื˜ ืœื•ืึท ืื™ืŸ ืขืก. ื•ื•ืืก ื’ื™ื˜ ืขืจ?

  • ื’ืจื™ื™ืก. ืขืก ืื™ื– ืงืœื™ื™ืŸ. LuaJIT ื’ื™ื˜ ืขืจื’ืขืฅ ืึทืจื•ื 100-200 ืงื™ืœืื‘ื™ื™ื˜ ืคื•ืŸ ื–ื›ึผืจื•ืŸ ืึธื•ื•ื•ืขืจื›ืขื“ ืื•ืŸ ืžื™ื ื™ืžืึทืœ ืคืึธืจืฉื˜ืขืœื•ื ื’ ืึธื•ื•ื•ืขืจื›ืขื“.
  • ื’ื™ื›ืงื™ื™ึทื˜. ื“ื™ LuaJIT ื™ื‘ืขืจื–ืขืฆืขืจ ืื™ื– ื ืึธืขื ื˜ ืฆื• C ืื™ืŸ ืคื™ืœืข ืกื™ื˜ื•ืึทื˜ื™ืึธื ืก, ืื™ืŸ ืขื˜ืœืขื›ืข ืกื™ื˜ื•ืึทื˜ื™ืึธื ืก ืขืก ืคืืจืœื™ืจื˜ ืฆื• Java, ืื™ืŸ ืขื˜ืœืขื›ืข ืขืก ืึธื•ื•ื•ืขืจื˜ื™ื™ืงืก ืขืก. ืคึฟืึทืจ ืึท ื‘ืฉืขืช, ืขืก ืื™ื– ื’ืขื•ื•ืขืŸ ื’ืขืจืขื›ื ื˜ ื•ื•ื™ ื“ื™ ืžืขืจืกื˜ ืžืึธื“ืขืจืŸ, ื“ื™ ืงื•ืœืึทืกื˜ JIT ืงืึทืžืคึผื™ื™ืœืขืจ. ืื™ืฆื˜ ืขืก ื–ืขื ืขืŸ ืงื™ืœืขืจ ืึธื ืขืก, ืึธื‘ืขืจ ื–ื™ื™ ื–ืขื ืขืŸ ื–ื™ื™ืขืจ ืฉื•ื•ืขืจ, ืœืžืฉืœ, ื“ื™ ื–ืขืœื‘ืข V8. ืขื˜ืœืขื›ืข JS ื™ื ื˜ืขืจืคึผืจืึทื˜ืขืจื– ืื•ืŸ Java HotSpot ื–ืขื ืขืŸ ืคืึทืกื˜ืขืจ ืื™ืŸ ืขื˜ืœืขื›ืข ืคื•ื ืงื˜ืŸ, ืึธื‘ืขืจ ื ืึธืš ืคืึทืจืœื™ืจืŸ ืื™ืŸ ืขื˜ืœืขื›ืข ืคื•ื ืงื˜ืŸ.
  • ื’ืจื™ื ื’ ืฆื• ืœืขืจื ืขืŸ. ืื•ื™ื‘ ืื™ืจ ื”ืึธื˜, ืœืžืฉืœ, ืึท ืคึผืขืจืœ ืงืึธื“ืขื‘ืึทืกืข ืื•ืŸ ืื™ืจ ื–ืขื ื˜ ื ื™ืฉื˜ ื‘ื•ืงื™ื ื’, ืื™ืจ ื•ื•ืขื˜ ื ื™ืฉื˜ ื’ืขืคึฟื™ื ืขืŸ ืคึผืขืจืœ ืคึผืจืึธื•ื’ืจืึทืžืขืจื–. ื•ื•ื™ื™ึทืœ ื–ื™ื™ ื–ืขื ืขืŸ ื ื™ืฉื˜ ื“ืึธืจื˜, ื–ื™ื™ ืึทืœืข ืึทื•ื•ืขืงื’ืขื ื•ืžืขืŸ, ืื•ืŸ ืขืก ืื™ื– ืœืึทื ื’ ืื•ืŸ ืฉื•ื•ืขืจ ืฆื• ืœืขืจื ืขืŸ ื–ื™ื™. ืื•ื™ื‘ ืื™ืจ ื•ื•ื™ืœืŸ ืคึผืจืึธื•ื’ืจืึทืžืขืจื– ืคึฟืึทืจ ืขืคึผืขืก ืึทื ื“ืขืจืฉ, ื–ื™ื™ ืงืขืŸ ืื•ื™ืš ื–ื™ื™ืŸ ืจื™ื˜ืจื™ื™ื ื“ ืึธื“ืขืจ ื’ืขืคึฟื•ื ืขืŸ. ืื™ืŸ ื“ืขื ืคืึทืœ ืคื•ืŸ ืœื•ืึท, ืึทืœืฅ ืื™ื– ืคึผืฉื•ื˜. Lua ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขืœืขืจื ื˜ ื“ื•ืจืš ืงื™ื™ืŸ ื™ื™ื ื’ืขืจ ืื™ืŸ ื“ืจื™ื™ ื˜ืขื’. ืขืก ื”ืึธื˜ ืžื™ืจ ื’ืขื ื•ืžืขืŸ ื•ื•ืขื’ืŸ ืฆื•ื•ื™ื™ ืฉืขื” ืฆื• ืจืขื›ืขื ืขืŸ ืขืก ืื•ื™ืก. ืฆื•ื•ื™ื™ ืฉืขื” ืฉืคึผืขื˜ืขืจ, ืื™ืš ืื™ื– ืฉื•ื™ืŸ ืฉืจื™ื™ื‘ืŸ ืงืึธื“ ืื™ืŸ ืคึผืจืึธื“ื•ืงืฆื™ืข. ืžื™ื˜ ืึท ื•ื•ืึธืš ืฉืคึผืขื˜ืขืจ, ืขืจ ื’ืขื’ืื ื’ืขืŸ ื’ืœื™ื™ึทืš ืฆื• ืคึผืจืึธื“ื•ืงืฆื™ืข ืื•ืŸ ืœื™ื ืงืก.

ื•ื•ื™ ืึท ืจืขื–ื•ืœื˜ืึทื˜, ืขืก ืงื•ืงื˜ ื•ื•ื™ ื“ืึธืก:

OpenResty: ื•ื•ืขื ื“ืŸ NGINX ืฆื• ืึท ืคื•ืœ-ืคืœืขื“ื–ืฉื“ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืกืขืจื•ื•ืขืจ

ืขืก ืื™ื– ืึท ืคึผืœืึทืฅ ื“ืึธ. OpenResty ื”ืื˜ ืคืืจื–ืืžืœื˜ ืึท ื‘ื™ื ื˜ืœ ืคื•ืŸ ืžืึทื“ื–ืฉื•ืœื–, ื‘ื™ื™ื“ืข ืœื•ืึทืฉ ืื•ืŸ ืขื ื“ื–ืฉืึทื ื–. ืื•ืŸ ืื™ืจ ื”ืึธื‘ืŸ ืึทืœืฅ ื’ืจื™ื™ื˜ - ื“ื™ืคึผืœื•ื™ื“ ืื•ืŸ ืืจื‘ืขื˜ืŸ.

ืขืงืกืึทืžืคึผืœืขืก

ื’ืขื ื•ื’ ืคื•ืŸ ื“ื™ ืœื™ืจื™ืงืก, ืœืึธื–ืŸ ืื•ื ื“ื– ืžืึทืš ืื•ื™ืฃ ืฆื• ื“ื™ ืงืึธื“. ื“ืึธ ืื™ื– ืึท ื‘ื™ืกืœ ื”ืขืœื ื•ื•ืขืœื˜:

OpenResty: ื•ื•ืขื ื“ืŸ NGINX ืฆื• ืึท ืคื•ืœ-ืคืœืขื“ื–ืฉื“ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืกืขืจื•ื•ืขืจ

ื•ื•ืึธืก ืื™ื– ื“ืึธืจื˜? ื“ืึธืก ืื™ื– ื“ืขืจ ืึธืจื˜ ืคื•ืŸ ื“ื™ ืžืึธื˜ืึธืจ. ืžื™ืจ ื˜ืึธืŸ ื ื™ื˜ ื–ืึธืจื’, ืžื™ืจ ื˜ืึธืŸ ื ื™ื˜ ืฉืจื™ื™ึทื‘ืŸ ืื•ื ื“ื–ืขืจ ืื™ื™ื’ืขื ืข ืจื•ื˜ื™ื ื’, ืžื™ืจ ื˜ืึธืŸ ื ื™ื˜ ื ืขืžืขืŸ ืึท ืคืึทืจื˜ื™ืง ืื™ื™ื ืขืจ - ืžื™ืจ ื”ืึธื‘ืŸ ืขืก ืฉื•ื™ืŸ ืื™ืŸ NGINX, ืžื™ืจ ืœืขื‘ืŸ ื’ืขื–ื•ื ื˜ ืื•ืŸ ืคื•ื™ืœ.

content_by_lua_block ืื™ื– ืึท ื‘ืœืึธืง ื•ื•ืึธืก ื–ืื’ื˜ ืึทื– ืžื™ืจ ื“ื™ื ืขืŸ ืื™ื ื”ืึทืœื˜ ืžื™ื˜ ืึท Lua ืฉืจื™ืคื˜. ืžื™ืจ ื ืขืžืขืŸ ืึท ืขื ื“ื–ืฉืึทื ื– ื‘ื™ื™ึทื˜ืขื•ื•ื“ื™ืง remote_addr ืื•ืŸ ืฆืขื˜ืœ ืขืก ืื™ืŸ string.format. ื“ืึธืก ืื™ื– ื“ื™ ื–ืขืœื‘ืข ื•ื•ื™ sprintf, ื‘ืœื•ื™ื– ืื™ืŸ ืœื•ืึท, ื ืึธืจ ืจื™ื›ื˜ื™ืง. ืื•ืŸ ืžื™ืจ ื’ืขื‘ืŸ ืขืก ืฆื• ื“ืขื ืงืœื™ืขื ื˜.

ื•ื•ื™ ืึท ืจืขื–ื•ืœื˜ืึทื˜, ืขืก ื•ื•ืขื˜ ืงื•ืงืŸ ื•ื•ื™ ื“ืึธืก:

OpenResty: ื•ื•ืขื ื“ืŸ NGINX ืฆื• ืึท ืคื•ืœ-ืคืœืขื“ื–ืฉื“ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืกืขืจื•ื•ืขืจ

ืื‘ืขืจ ืฆื•ืจื™ืง ืฆื• ื“ืขืจ ืขืžืขืก ื•ื•ืขืœื˜. ืื™ืŸ ืคึผืจืึธื“ื•ืงืฆื™ืข, ืงื™ื™ืŸ ืื™ื™ื ืขืจ ื“ื™ืคึผืœื•ื™ื“ ื”ืขืœื ื•ื•ืขืœื˜. ืื•ื ื“ื–ืขืจ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ื™ื•ื–ืฉืึทื•ื•ืึทืœื™ ื’ื™ื™ื˜ ืฆื• ื“ื™ ื“ืึทื˜ืึทื‘ื™ื™ืก ืึธื“ืขืจ ืขืจื’ืขืฅ ืึทื ื“ืขืจืฉ ืื•ืŸ ืจื•ื‘ึฟ ืคื•ืŸ ื“ื™ ืฆื™ื™ื˜ ืขืก ื•ื•ืืจื˜ืŸ ืคึฟืึทืจ ืึท ืขื ื˜ืคืขืจ.

OpenResty: ื•ื•ืขื ื“ืŸ NGINX ืฆื• ืึท ืคื•ืœ-ืคืœืขื“ื–ืฉื“ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืกืขืจื•ื•ืขืจ

ื–ื™ืฆื˜ ื ืึธืจ ืื•ืŸ ืฐืึทืจื˜. ืขืก ืื™ื– ื ื™ืฉื˜ ื–ื™ื™ืขืจ ื’ื•ื˜. ื•ื•ืขืŸ 100.000 ื™ื•ื–ืขืจื– ืงื•ืžืขืŸ, ืขืก ืื™ื– ื–ื™ื™ืขืจ ืฉื•ื•ืขืจ ืคึฟืึทืจ ืื•ื ื“ื–. ื“ืขืจื™ื‘ืขืจ, ืœืึธื–ืŸ ืื•ื ื“ื– ื ื•ืฆืŸ ืึท ืคึผืฉื•ื˜ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ื•ื•ื™ ืึท ื‘ื™ื™ึทืฉืคึผื™ืœ. ืžื™ืจ ื•ื•ืขืœืŸ ืงื•ืงืŸ ืคึฟืึทืจ ื‘ื™ืœื“ืขืจ, ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ืงืึทืฅ. ื ืึธืจ ืžื™ืจ ื•ื•ืขืœืŸ ื ื™ืฉื˜ ื ืึธืจ ื–ื•ื›ืŸ, ืžื™ืจ ื•ื•ืขืœืŸ ื™ืงืกืคึผืึทื ื“ ื“ื™ ื˜ืขืจืžื™ื ืขืŸ ืื•ืŸ, ืื•ื™ื‘ ื“ืขืจ ื‘ืึทื ื™ืฆืขืจ ื’ืขื–ื•ื›ื˜ ืคึฟืึทืจ "ืงื™ื˜ืึทื ื–", ืžื™ืจ ื•ื•ืขืœืŸ ื’ืขืคึฟื™ื ืขืŸ ืงืึทืฅ, ืคึผื•ื›ื™ื–, ืื•ืŸ ืึทื–ื•ื™ ืื•ื™ืฃ. ืขืจืฉื˜ืขืจ ืžื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ื‘ืึทืงื•ืžืขืŸ ื“ื™ ื‘ืขื˜ืŸ ื“ืึทื˜ืŸ ืื•ื™ืฃ ื“ื™ ื‘ืึทืงืขื ื“. ืขืก ืงื•ืงื˜ ื•ื•ื™ ื“ืึธืก:

OpenResty: ื•ื•ืขื ื“ืŸ NGINX ืฆื• ืึท ืคื•ืœ-ืคืœืขื“ื–ืฉื“ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืกืขืจื•ื•ืขืจ

ืฆื•ื•ื™ื™ ืฉื•ืจื•ืช ืœืึธื–ืŸ ืื™ืจ ืงืœื™ื™ึทื‘ืŸ GET ืคึผืึทืจืึทืžืขื˜ืขืจืก, ืงื™ื™ืŸ ืงืึทืžืคึผืœืึทืงื™ื™ืฉืึทื ื–. ื“ืขืจื ืึธืš ืžื™ืจ, ืœืžืฉืœ, ื‘ืึทืงื•ืžืขืŸ ื“ื™ ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข ืคึฟื•ืŸ ืึท ื“ืึทื˜ืึทื‘ื™ื™ืก ืžื™ื˜ ืึท ื˜ื™ืฉ ื“ื•ืจืš ืงื™ื•ื•ืขืจื“ ืื•ืŸ ืคืึทืจืœืขื ื’ืขืจื•ื ื’ ื ื™ืฆืŸ ืึท ืจืขื’ื•ืœืขืจ SQL ืึธื ืคึฟืจืขื’. ืึทืœืฅ ืื™ื– ืคึผืฉื•ื˜. ืขืก ืงื•ืงื˜ ื•ื•ื™ ื“ืึธืก:

OpenResty: ื•ื•ืขื ื“ืŸ NGINX ืฆื• ืึท ืคื•ืœ-ืคืœืขื“ื–ืฉื“ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืกืขืจื•ื•ืขืจ

ืžื™ืจ ืคืึทืจื‘ื™ื ื“ืŸ ื“ื™ ื‘ื™ื‘ืœื™ืึธื˜ืขืง resty.mysql, ื•ื•ืึธืก ืžื™ืจ ื”ืึธื‘ืŸ ืฉื•ื™ืŸ ืื™ืŸ ื“ื™ ืงื™ื˜. ืžื™ืจ ื˜ืึธืŸ ื ื™ื˜ ื“ืึทืจืคึฟืŸ ืฆื• ื™ื ืกื˜ืึทืœื™ืจืŸ ืขืคึผืขืก, ืึทืœืฅ ืื™ื– ื’ืจื™ื™ื˜. ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ ื•ื•ื™ ืฆื• ืคืึทืจื‘ื™ื ื“ืŸ ืื•ืŸ ืžืึทื›ืŸ ืึท SQL ืึธื ืคึฟืจืขื’:

OpenResty: ื•ื•ืขื ื“ืŸ NGINX ืฆื• ืึท ืคื•ืœ-ืคืœืขื“ื–ืฉื“ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืกืขืจื•ื•ืขืจ

ืขืก ืื™ื– ืึท ื‘ื™ืกืœ ืกืงืขืจื™, ืึธื‘ืขืจ ืขืก ืึทืจื‘ืขื˜. ื“ืึธ 10 ืื™ื– ื“ืขืจ ืฉื™ืขื•ืจ. ืžื™ืจ ืฆื™ืขืŸ ืื•ื™ืก 10 ืจืขืงืึธืจื“ืก, ืžื™ืจ ื–ืขื ืขืŸ ืคื•ื™ืœ, ืžื™ืจ ื•ื•ืขืœืŸ ื ื™ืฉื˜ ื•ื•ื™ื™ึทื–ืŸ ืžืขืจ. ืื™ืŸ SQL, ืื™ืš ืคืืจื’ืขืกืŸ ื•ื•ืขื’ืŸ ื“ื™ ืฉื™ืขื•ืจ.

ื“ืขืจื ืึธืš ืžื™ืจ ื’ืขืคึฟื™ื ืขืŸ ื‘ื™ืœื“ืขืจ ืคึฟืึทืจ ืึทืœืข ืคึฟืจืื’ืŸ. ืžื™ืจ ืงืœื™ื™ึทื‘ืŸ ืึท ื‘ื™ื ื˜ืœ ืคื•ืŸ ืจื™ืงื•ื•ืขืก ืื•ืŸ ืคึผืœืึธืžื‘ื™ืจืŸ ืื™ืŸ ืึท ืœื•ืึท ื˜ื™ืฉ ื’ืขืจื•ืคืŸ reqs, ืื•ืŸ ื˜ืึธืŸ ngx.location.capture_multi.

OpenResty: ื•ื•ืขื ื“ืŸ NGINX ืฆื• ืึท ืคื•ืœ-ืคืœืขื“ื–ืฉื“ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืกืขืจื•ื•ืขืจ

ืึทืœืข ื“ื™ ืจื™ืงื•ื•ืขืก ื’ื™ื™ืŸ ืื™ืŸ ืคึผืึทืจืึทืœืขืœ, ืื•ืŸ ื“ื™ ืขื ื˜ืคึฟืขืจืก ื–ืขื ืขืŸ ืื•ืžื’ืขืงืขืจื˜ ืฆื• ืื•ื ื“ื–. ื“ื™ ืคืœื™ืกื ื“ื™ืง ืฆื™ื™ื˜ ืื™ื– ื’ืœื™ื™ึทืš ืฆื• ื“ื™ ืขื ื˜ืคืขืจ ืฆื™ื™ื˜ ืคื•ืŸ ื“ื™ ืกืœืึธื•ืึทืกื˜ ืื™ื™ื ืขืจ. ืื•ื™ื‘ ืžื™ืจ ืึทืœืข ื“ืจื™ื™ืขืŸ ืฆื•ืจื™ืง ืื™ืŸ 50 ืžื™ืœื™ืกืขืงืึทื ื“ื–, ืื•ืŸ ืžื™ืจ ื’ืขืฉื™ืงื˜ ืึท ื”ื•ื ื“ืขืจื˜ ืจื™ืงื•ื•ืขืก, ืžื™ืจ ื•ื•ืขืœืŸ ื‘ืึทืงื•ืžืขืŸ ืึทืŸ ืขื ื˜ืคืขืจ ืื™ืŸ 50 ืžื™ืœื™ืกืขืงืึทื ื“ื–.

ื–ื™ื ื˜ ืžื™ืจ ื–ืขื ืขืŸ ืคื•ื™ืœ ืื•ืŸ ื˜ืึธืŸ ื ื™ืฉื˜ ื•ื•ืขืœืŸ ืฆื• ืฉืจื™ื™ึทื‘ืŸ ื”ื˜ื˜ืคึผ ื”ืึทื ื“ืœื™ื ื’ ืื•ืŸ ืงืึทื˜ืฉื™ื ื’, ืžื™ืจ ื•ื•ืขืœืŸ ืžืึทื›ืŸ NGINX ื˜ืึธืŸ ืึทืœืฅ ืคึฟืึทืจ ืื•ื ื“ื–. ื•ื•ื™ ืื™ืจ ื’ืขื–ืขืŸ, ืขืก ืื™ื– ื’ืขื•ื•ืขืŸ ืึท ื‘ืงืฉื” ืคึฟืึทืจ url/fetchื“ื ืื™ื– ืขืก:

OpenResty: ื•ื•ืขื ื“ืŸ NGINX ืฆื• ืึท ืคื•ืœ-ืคืœืขื“ื–ืฉื“ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืกืขืจื•ื•ืขืจ

ืžื™ืจ ืžืึทื›ืŸ ืคึผืฉื•ื˜ proxy_pass, ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ ื•ื•ื• ืฆื• ืงืึทืฉ, ื•ื•ื™ ืฆื• ื˜ืึธืŸ ื“ืึธืก, ืื•ืŸ ืึทืœืฅ ืึทืจื‘ืขื˜ ืคึฟืึทืจ ืื•ื ื“ื–.

ืื‘ืขืจ ื“ืึธืก ืื™ื– ื ื™ืฉื˜ ื’ืขื ื•ื’, ืžื™ืจ ื ืึธืš ื“ืึทืจืคึฟืŸ ืฆื• ื’ืขื‘ืŸ ื“ื™ ื“ืึทื˜ืŸ ืฆื• ื“ืขืจ ื‘ืึทื ื™ืฆืขืจ. ื“ื™ ืกื™ืžืคึผืœืึทืกื˜ ื’ืขื“ืึทื ืง ืื™ื– ืฆื• ืกื™ืจื™ืึทืœื™ื– ืึทืœืฅ ืฆื• JSON, ืœื™ื™ื›ื˜, ืื™ืŸ ืฆื•ื•ื™ื™ ืฉื•ืจื•ืช. ืžื™ืจ ื’ืขื‘ืŸ ืื™ื ื”ืึทืœื˜-ื˜ื™ืคึผ, ืžื™ืจ ื’ืขื‘ืŸ JSON.

ืื‘ืขืจ ืขืก ืื™ื– ืื™ื™ืŸ ืฉื•ื•ืขืจื™ืงื™ื™ื˜: ื“ืขืจ ื‘ืึทื ื™ืฆืขืจ ื˜ื•ื˜ ื ื™ืฉื˜ ื•ื•ืขืœืŸ ืฆื• ืœื™ื™ืขื ืขืŸ JSON. ืžื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืฆื•ืฆื™ืขืŸ ืคืจืึธื ื˜-ืขื ื“ ื“ืขื•ื•ืขืœืึธืคึผืขืจืก. ืžืืœ ืžื™ืจ ื˜ืึธืŸ ื ื™ื˜ ืคื™ืœืŸ ื•ื•ื™ ืฆื• ื˜ืึธืŸ ืขืก ืื™ืŸ ืขืจืฉื˜ืขืจ. ื™ืึธ, ืื•ืŸ ืกืขืึธ ืกืคึผืขืฉืึทืœืึทืกืฅ ื•ื•ืขืœืŸ ื–ืึธื’ืŸ ืึทื– ืื•ื™ื‘ ืžื™ืจ ื–ืขื ืขืŸ ืงื•ืงืŸ ืคึฟืึทืจ ื‘ื™ืœื“ืขืจ, ื–ื™ื™ ื˜ืึธืŸ ื ื™ื˜ ื–ืึธืจื’ืŸ. ืื•ืŸ ืื•ื™ื‘ ืžื™ืจ ื’ืขื‘ืŸ ื–ื™ื™ ืขื˜ืœืขื›ืข ืื™ื ื”ืึทืœื˜, ื–ื™ื™ ื•ื•ืขืœืŸ ื–ืึธื’ืŸ ืึทื– ืื•ื ื“ื–ืขืจ ื–ื•ื›ืŸ ืขื ื“ื–ืฉืึทื ื– ื˜ืึธืŸ ื ื™ื˜ ืื™ื ื“ืขืงืก ืขืคึผืขืก.

ื•ื•ืึธืก ืฆื• ื˜ืึธืŸ ืžื™ื˜ ืื™ื? ืคื•ืŸ ืงื•ืจืก, ืžื™ืจ ื•ื•ืขืœืŸ ื’ืขื‘ืŸ ื“ืขื ื‘ืึทื ื™ืฆืขืจ HTML. ื“ื–ืฉืขื ืขืจื™ื™ื˜ื™ื ื’ ืžื™ื˜ ื›ืึทื ื“ืึทืœื– ืื™ื– ื ื™ืฉื˜ comme il faut, ืึทื–ื•ื™ ืžื™ืจ ื•ื•ืขืœืŸ ืฆื• ื ื•ืฆืŸ ื˜ืขืžืคึผืœืึทื˜ืขืก. ืขืก ืื™ื– ืึท ื‘ื™ื‘ืœื™ืึธื˜ืขืง ืคึฟืึทืจ ื“ืขื lua-resty-template.

OpenResty: ื•ื•ืขื ื“ืŸ NGINX ืฆื• ืึท ืคื•ืœ-ืคืœืขื“ื–ืฉื“ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืกืขืจื•ื•ืขืจ

ืื™ืจ ืžื•ื–ืŸ ื”ืึธื‘ืŸ ื’ืขื–ืขืŸ ื“ื™ ื“ืจื™ื™ ื“ืจืขื“ื™ื“ ืื•ืชื™ื•ืช OPM. OpenResty ืงื•ืžื˜ ืžื™ื˜ ื–ื™ื™ืŸ ืื™ื™ื’ืขื ืข ืคึผืขืงืœ ืคืึทืจื•ื•ืึทืœื˜ืขืจ, ื“ื•ืจืš ื•ื•ืึธืก ืื™ืจ ืงืขื ืขืŸ ื™ื ืกื˜ืึทืœื™ืจืŸ ืึท ื‘ื™ื ื˜ืœ ืคื•ืŸ ืคืึทืจืฉื™ื“ืขื ืข ืžืึทื“ื–ืฉื•ืœื–, ืกืคึผืขืฆื™ืขืœ, lua-resty-template. ืขืก ืื™ื– ืึท ืคึผืฉื•ื˜ ืžื•ืกื˜ืขืจ ืžืึธื˜ืึธืจ ืขื ืœืขืš ืฆื• Django ื˜ืขืžืคึผืœืึทื˜ืขืก. ื“ืึธืจื˜ ืื™ืจ ืงืขื ืขืŸ ืฉืจื™ื™ึทื‘ืŸ ืงืึธื“ ืื•ืŸ ื˜ืึธืŸ ืึท ื‘ื™ื™ึทื˜ืขื•ื•ื“ื™ืง ืกืึทื‘ืกื˜ื™ื˜ื•ืฉืึทืŸ.

ื•ื•ื™ ืึท ืจืขื–ื•ืœื˜ืึทื˜, ืึทืœืฅ ื•ื•ืขื˜ ืงื•ืงืŸ ื•ื•ื™ ื“ืึธืก:

OpenResty: ื•ื•ืขื ื“ืŸ NGINX ืฆื• ืึท ืคื•ืœ-ืคืœืขื“ื–ืฉื“ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืกืขืจื•ื•ืขืจ

ืžื™ืจ ื’ืขื ื•ืžืขืŸ ื“ื™ ื“ืึทื˜ืŸ ืื•ืŸ ืจืขื ื“ืขืจื“ ื“ื™ ืžื•ืกื˜ืขืจ ื•ื•ื™ื“ืขืจ ืื™ืŸ ืฆื•ื•ื™ื™ ืฉื•ืจื•ืช. ื“ืขืจ ื‘ืึทื ื™ืฆืขืจ ืื™ื– ืฆื•ืคืจื™ื“ืŸ, ื’ืึทื˜ ืงืึทืฅ. ื–ื™ื ื˜ ืžื™ืจ ื™ืงืกืคึผืึทื ื“ื™ื“ ื“ื™ ื‘ืงืฉื”, ืขืจ ืื•ื™ืš ื‘ืืงื•ืžืขืŸ ืึท ืคื•ื˜ืขืจ ืคึผืœืึธืžื‘ืข ืคึฟืึทืจ ืงื™ื˜ืึทื ื–. ืื™ืจ ื•ื•ื™ื™ืกื˜ ืงื™ื™ื ืžืืœ ื ื™ืฉื˜, ืืคืฉืจ ื”ืื˜ ืขืจ ืขืก ื’ืขื–ื•ื›ื˜, ืื‘ืขืจ ืขืจ ื”ืื˜ ื ื™ืฉื˜ ื’ืขืงืขื ื˜ ืจื™ื›ื˜ื™ื’ ืคืืจืžื•ืœื™ืจืŸ ื–ื™ื™ืŸ ื‘ืงืฉื”.

ืึทืœืฅ ืื™ื– ืงื™ืœ, ืึธื‘ืขืจ ืžื™ืจ ื–ืขื ืขืŸ ืื™ืŸ ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’, ืื•ืŸ ืžื™ืจ ื˜ืึธืŸ ื ื™ืฉื˜ ื•ื•ืขืœืŸ ืฆื• ื•ื•ื™ื™ึทื–ืŸ ื™ื•ื–ืขืจื– ื ืึธืš. ืœืึธืžื™ืจ ืžืึทื›ืŸ ืึท ื“ืขืจืœื•ื™ื‘ืขื ื™ืฉ. ืฆื• ื˜ืึธืŸ ื“ืึธืก, ืœืึธืžื™ืจ ื–ืขืŸ ื•ื•ื™ NGINX ื›ืึทื ื“ืึทืœื– ื“ื™ ื‘ืงืฉื” ืื™ืŸ ื˜ืขืจืžื™ื ืขืŸ ืคื•ืŸ OpenResty:

  • ืขืจืฉื˜ืขืจ ืคืึทืกืข - ืฆื•ื˜ืจื™ื˜, ื•ื•ืขืŸ ื“ืขืจ ื‘ืึทื ื™ืฆืขืจ ื ืึธืจ ื’ืขืงื•ืžืขืŸ, ืื•ืŸ ืžื™ืจ ื’ืขืงื•ืงื˜ ืื•ื™ืฃ ืื™ื ื“ื•ืจืš ื›ืขื“ืขืจื–, ื“ื•ืจืš IP ืึทื“ืจืขืก, ื“ื•ืจืš ืื ื“ืขืจืข ื“ืึทื˜ืŸ. ืื™ืจ ืงืขื ืขืŸ ืžื™ื“ ืฆืขื”ืึทืงืŸ ืขืก ืึทื•ื•ืขืง ืื•ื™ื‘ ืžื™ืจ ื˜ืึธืŸ ื ื™ื˜ ื•ื•ื™ ืขืก. ื“ืึธืก ืงืขืŸ ื–ื™ื™ืŸ ื’ืขื ื•ืฆื˜ ืคึฟืึทืจ ื“ืขืจืœื•ื™ื‘ืขื ื™ืฉ, ืึธื“ืขืจ ืื•ื™ื‘ ืžื™ืจ ื‘ืึทืงื•ืžืขืŸ ืึท ืคึผืœืึทืฅ ืคื•ืŸ ืจื™ืงื•ื•ืขืก, ืžื™ืจ ืงืขื ืขืŸ ืœื™ื™ื›ื˜ ืฆืขื”ืึทืงืŸ ื–ื™ื™ ืื™ืŸ ื“ืขื ืคืึทืกืข.
  • ืจื™ืจื™ื™ื˜. ืจื™ืจื™ื™ื˜ื™ื ื’ ืขื˜ืœืขื›ืข ื‘ืขื˜ืŸ ื“ืึทื˜ืŸ.
  • ืฆื•ืคืจื™ื“ืŸ. ืžื™ืจ ื’ืขื‘ืŸ ืื™ื ื”ืึทืœื˜ ืฆื• ื“ืขืจ ื‘ืึทื ื™ืฆืขืจ.
  • ื›ืขื“ืขืจ ืคื™ืœื˜ืขืจ. ื˜ื•ื™ืฉืŸ ื“ื™ ืขื ื˜ืคืขืจ ื›ืขื“ืขืจื–. ืื•ื™ื‘ ืžื™ืจ ื’ืขื•ื•ื™ื™ื ื˜ proxy_pass, ืžื™ืจ ืงืขื ืขืŸ ืจื™ืจื™ื™ื˜ ืขื˜ืœืขื›ืข ื›ืขื“ืขืจื– ืื™ื™ื“ืขืจ ื’ืขื‘ืŸ ืขืก ืฆื• ื“ืขืจ ื‘ืึทื ื™ืฆืขืจ.
  • ื’ื•ืฃ ืคื™ืœื˜ืขืจ. ืžื™ืจ ืงืขื ืขืŸ ื˜ื•ื™ืฉืŸ ื“ืขื ื’ื•ืฃ.
  • ืงืœืึธืฅ - ืœืึธื’ื™ื ื’. ืขืก ืื™ื– ืžืขื’ืœืขืš ืฆื• ืฉืจื™ื™ึทื‘ืŸ ืœืึธื’ืก ืื™ืŸ Elasticsearch ืึธืŸ ืึทืŸ ื ืึธืš ืฉื™ื›ื˜ืข.

ืื•ื ื“ื–ืขืจ ื“ืขืจืœื•ื™ื‘ืขื ื™ืฉ ื•ื•ืขื˜ ืงื•ืงืŸ ืขืคึผืขืก ื•ื•ื™ ื“ืึธืก:

OpenResty: ื•ื•ืขื ื“ืŸ NGINX ืฆื• ืึท ืคื•ืœ-ืคืœืขื“ื–ืฉื“ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืกืขืจื•ื•ืขืจ

ืžื™ืจ ื•ื•ืขืœืŸ ืขืก ืฆื•ื’ืขื‘ืŸ ืฆื• ื“ืขื location, ื•ื•ืึธืก ืžื™ืจ ื“ื™ืกืงืจื™ื™ื‘ื“ ืคืจื™ืขืจ, ืื•ืŸ ืฉื˜ืขืœืŸ ื“ื™ ืคืืœื’ืขื ื“ืข ืงืึธื“ ื“ืึธืจื˜:

OpenResty: ื•ื•ืขื ื“ืŸ NGINX ืฆื• ืึท ืคื•ืœ-ืคืœืขื“ื–ืฉื“ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืกืขืจื•ื•ืขืจ

ืžื™ืจ ืงื•ืงืŸ ืฆื• ื–ืขืŸ ืื•ื™ื‘ ืžื™ืจ ื”ืึธื‘ืŸ ืึท ืงื™ื›ืœ ื˜ืึธืงืขืŸ. ืื•ื™ื‘ ื ื™ื˜, ืžื™ืจ ื•ื•ืึทืจืคืŸ ืื•ื™ืฃ ื“ืขืจืœื•ื™ื‘ืขื ื™ืฉ. ื™ื•ื–ืขืจื– ื–ืขื ืขืŸ ื›ื™ื˜ืจืข ืื•ืŸ ืงืขืŸ ื˜ืจืขืคืŸ ืึทื– ืึท ืงื™ื›ืœ ื˜ืึธืงืขืŸ ื“ืึทืจืฃ ื–ื™ื™ืŸ ืฉื˜ืขืœืŸ. ื“ืขืจื™ื‘ืขืจ, ืžื™ืจ ื•ื•ืขืœืŸ ืื•ื™ืš ืฉื˜ืขืœืŸ ืขืก ืื™ืŸ Redis:

OpenResty: ื•ื•ืขื ื“ืŸ NGINX ืฆื• ืึท ืคื•ืœ-ืคืœืขื“ื–ืฉื“ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืกืขืจื•ื•ืขืจ

ื“ืขืจ ืงืึธื“ ืคึฟืึทืจ ืืจื‘ืขื˜ืŸ ืžื™ื˜ Redis ืื™ื– ื–ื™ื™ืขืจ ืคึผืฉื•ื˜ ืื•ืŸ ื ื™ื˜ ืึทื ื“ืขืจืฉ ืคื•ืŸ ืื ื“ืขืจืข ืฉืคึผืจืึทื›ืŸ. ืื™ืŸ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืฆื™ื™ื˜, ืึทืœืข ืึทืจื™ื™ึทื ืฉืจื™ื™ึทื‘ / ืจืขื–ื•ืœื˜ืึทื˜, ื•ื•ืึธืก ืื™ื– ื“ืึธืจื˜, ื•ื•ืึธืก ืื™ื– ื“ืึธ, ืขืก ืื™ื– ื ื™ืฉื˜ ื‘ืœืึทืงื™ื ื’. ืื•ื™ื‘ ืื™ืจ ืฉืจื™ื™ึทื‘ืŸ ืกื™ื ื˜ืฉืจืึธื ืึธื•ืก ืงืึธื“, ืขืก ืึทืจื‘ืขื˜ ื™ื™ืกื™ื ื’ืงืจืึทื ืึทืกืœื™. ื•ื•ื™ ืžื™ื˜ ื’ืขื‘ืŸ, ื ืึธืจ ื’ื•ื˜ ื’ืขื˜ืืŸ.

OpenResty: ื•ื•ืขื ื“ืŸ NGINX ืฆื• ืึท ืคื•ืœ-ืคืœืขื“ื–ืฉื“ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืกืขืจื•ื•ืขืจ

ืœืึธืžื™ืจ ื˜ืึธืŸ ื“ื™ ื“ืขืจืœื•ื™ื‘ืขื ื™ืฉ ื–ื™ืš:

OpenResty: ื•ื•ืขื ื“ืŸ NGINX ืฆื• ืึท ืคื•ืœ-ืคืœืขื“ื–ืฉื“ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืกืขืจื•ื•ืขืจ

ืžื™ืจ ื–ืึธื’ืŸ ืึทื– ืžื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืœื™ื™ืขื ืขืŸ ื“ื™ ื‘ืขื˜ืŸ ื’ื•ืฃ. ืžื™ืจ ื‘ืึทืงื•ืžืขืŸ POST ืึทืจื’ื•ืžืขื ื˜ืŸ, ืงืึธื ื˜ืจืึธืœื™ืจืŸ ืึทื– ื“ื™ ืœืึธื’ื™ืŸ ืื•ืŸ ืคึผืึทืจืึธืœ ื–ืขื ืขืŸ ืจื™ื›ื˜ื™ืง. ืื•ื™ื‘ ืคืึทืœืฉ, ืžื™ืจ ื•ื•ืึทืจืคืŸ ืื•ื™ืฃ ื“ืขืจืœื•ื™ื‘ืขื ื™ืฉ. ืื•ืŸ ืื•ื™ื‘ ื–ื™ื™ ื–ืขื ืขืŸ ืจื™ื›ื˜ื™ืง, ืžื™ืจ ืฉืจื™ื™ึทื‘ืŸ ื“ืขื ืกื™ืžืขืŸ ืฆื• Redis:

OpenResty: ื•ื•ืขื ื“ืŸ NGINX ืฆื• ืึท ืคื•ืœ-ืคืœืขื“ื–ืฉื“ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืกืขืจื•ื•ืขืจ

ื“ื• ื–ืืœืกื˜ ื ื™ืฉื˜ ืคืึทืจื’ืขืกืŸ ืฆื• ืฉื˜ืขืœืŸ ื“ื™ ืงื™ื›ืœ, ื“ืึธืก ืื™ื– ืื•ื™ืš ื’ืขื˜ืืŸ ืื™ืŸ ืฆื•ื•ื™ื™ ืฉื•ืจื•ืช:

OpenResty: ื•ื•ืขื ื“ืŸ NGINX ืฆื• ืึท ืคื•ืœ-ืคืœืขื“ื–ืฉื“ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืกืขืจื•ื•ืขืจ

ื“ืขืจ ื‘ื™ื™ืฉืคึผื™ืœ ืื™ื– ืคึผืฉื•ื˜, ืกืคึผืขืงื•ืœืึทื˜ื™ื•ื•ืข. ืคื•ืŸ ืงื•ืจืก, ืžื™ืจ ื•ื•ืขืœืŸ ื ื™ืฉื˜ ืžืึทื›ืŸ ืึท ื“ื™ื ืกื˜ ื•ื•ืึธืก ื•ื•ื™ื™ื–ื˜ ืงืึทืฅ ืฆื• ืžืขื ื˜ืฉืŸ. ืื‘ืขืจ ื•ื•ืขืจ ืงืขืŸ ืื•ื ื“ื–. ืึทื–ื•ื™ ืœืึธื–ืŸ ืก ื’ื™ื™ืŸ ืื™ื‘ืขืจ ื•ื•ืึธืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขื˜ืืŸ ืื™ืŸ ืคึผืจืึธื“ื•ืงืฆื™ืข.

  • ืžื™ื ื™ืžืึทืœื™ืกื˜ ื‘ืึทืงืขื ื“. ืžืืœ ืžื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ื’ืขื‘ืŸ ื’ืึทื ืฅ ืึท ื‘ื™ืกืœ ืคื•ืŸ ื“ืึทื˜ืŸ ืฆื• ื“ื™ ื‘ืึทืงืขื ื“: ืขืจื’ืขืฅ ืžื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืคืึทืจื‘ื™ื™ึทื˜ืŸ ื“ื™ ื“ืึทื˜ืข, ืขืจื’ืขืฅ ืžื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ื•ื•ื™ื™ึทื–ืŸ ืึท ืžื™ืŸ ืคื•ืŸ ืจืฉื™ืžื”, ื–ืึธื’ืŸ ื•ื•ื™ ืคื™ืœืข ื ื™ืฆืขืจืก ื–ืขื ืขืŸ ืื•ื™ืฃ ื“ืขื ืคึผืœืึทืฅ ืื™ืฆื˜, ืฉืจื•ื™ืฃ ืื•ื™ืฃ ืึท ื˜ืึธืžื‘ืึทื ืง ืึธื“ืขืจ ืกื˜ืึทื˜ื™ืกื˜ื™ืง. ืขืคึผืขืก ืึทื–ื•ื™ ืงืœื™ื™ืŸ. ืขื˜ืœืขื›ืข ืžื™ื ื™ืžืึทืœ ื‘ืจืขืงืœืขืš ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขืžืื›ื˜ ื–ื™ื™ืขืจ ืœื™ื™ื›ื˜. ื“ืึธืก ื•ื•ืขื˜ ื–ื™ื™ืŸ ืฉื ืขืœ, ื’ืจื™ื ื’ ืื•ืŸ ื’ืจื•ื™ืก.
  • ื“ืึทื˜ืึท ืคึผืจื™ืคึผืจืึทืกืขืกื™ื ื’. ืžืืœ ืžื™ืจ ื•ื•ื™ืœืŸ ืฆื• ื™ืžื‘ืขื“ ืึทื“ืก ืื™ืŸ ืื•ื ื“ื–ืขืจ ื‘ืœืึทื˜, ืื•ืŸ ืžื™ืจ ื ืขืžืขืŸ ื“ื™ ืึทื“ืก ืžื™ื˜ ืึทืคึผื™ ืจื™ืงื•ื•ืขืก. ื“ืึธืก ืื™ื– ื–ื™ื™ืขืจ ื’ืจื™ื ื’ ืฆื• ื˜ืึธืŸ ื“ืึธ. ืžื™ืจ ื˜ืึธืŸ ื ื™ื˜ ืžืึทืกืข ืื•ื ื“ื–ืขืจ ื‘ืึทืงืขื ื“, ื•ื•ืึธืก ืื™ื– ืฉื•ื™ืŸ ืืจื‘ืขื˜ืŸ ืฉื•ื•ืขืจ. ืื™ืจ ืงืขื ืขืŸ ืงืœื™ื™ึทื‘ืŸ ืื•ืŸ ืงืœื™ื™ึทื‘ืŸ ื“ืึธ. ืžื™ืจ ืงืขื ืขืŸ ืคื•ืจืขื ืขื˜ืœืขื›ืข JS ืึธื“ืขืจ, ืื•ื™ืฃ ื“ื™ ืคืึทืจืงืขืจื˜, ืึทื ืกื˜ื™ืง, ืคึผืจืขืคึผืจืึธืกืขืกืก ืขืคึผืขืก ืื™ื™ื“ืขืจ ื’ืขื‘ืŸ ืขืก ืฆื• ื“ืขืจ ื‘ืึทื ื™ืฆืขืจ.
  • ืคืึทืกืึทื“ ืคึฟืึทืจ ืžื™ืงืจืึธืกืขืจื•ื•ื™ืก. ื“ืึธืก ืื™ื– ืื•ื™ืš ืึท ื–ื™ื™ืขืจ ื’ื•ื˜ ืคืึทืœ, ืื™ืš ื™ืžืคึผืœืึทืžืขื ืึทื“ ืขืก. ืคืืจ ื“ืขื ื”ืื‘ ืื™ืš ื’ืขืืจื‘ืขื˜ ืคืืจ ื˜ืขื ื–ื•ืจ, ืืŸ ืขืœืขืงื˜ืจืื ื™ืฉืข ืจืขืคืืจื˜ ืคื™ืจืžืข ื•ื•ืขืœื›ืข ื’ื™ื˜ ื‘ืืจื™ื›ื˜ ืคืืจ ื‘ืขืจืš ื”ืืœื‘ ืคื•ืŸ ื“ื™ ืœืขื’ืืœืข ืื™ื™ื ื”ื™ื™ื˜ืŸ ืื™ืŸ ืœืื ื“. ืžื™ืจ ื”ืึธื‘ืŸ ื’ืขืžืื›ื˜ ืึท ื“ื™ื ืกื˜, ืคื™ืœืข ื˜ื™ื ื’ื– ื–ืขื ืขืŸ ื’ืขื˜ืืŸ ื“ืึธืจื˜ ืžื™ื˜ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืžืขืงืึทื ื™ื–ืึทื: ืจื•ื˜ื™ื ื’, ื“ืขืจืœื•ื™ื‘ืขื ื™ืฉ, ืื•ืŸ ืžืขืจ.
    OpenResty ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื™ื ื˜ ื•ื•ื™ ื“ื™ ืงืœื™ื™ ืคึฟืึทืจ ื“ื™ื™ืŸ ืžื™ืงืจืึธืกืขืจื•ื•ื™ืกืขืก ืฆื• ืฆื•ืฉื˜ืขืœืŸ ืึท ืื™ื™ืŸ ืึทืงืกืขืก ืฆื• ืึทืœืฅ ืื•ืŸ ืึท ืื™ื™ืŸ ืฆื•ื‘ื™ื ื“. ื–ื™ื ื˜ ืžื™ืงืจืึธืกืขืจื•ื•ื™ืกืขืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขืฉืจื™ื‘ืŸ ืื™ืŸ ืึทื–ืึท ืึท ื•ื•ืขื’ ืึทื– ืื™ืจ ื”ืึธื‘ืŸ Node.js ื“ืึธ, ืื™ืจ ื”ืึธื‘ืŸ PHP ื“ืึธ, ืื™ืจ ื”ืึธื‘ืŸ ืคึผื™ื˜ื”ืึธืŸ ื“ืึธ, ืขืก ืื™ื– ืขื˜ืœืขื›ืข Erlang ื–ืึทืš ื“ืึธ, ืžื™ืจ ืคึฟืึทืจืฉื˜ื™ื™ืŸ ืึทื– ืžื™ืจ ื˜ืึธืŸ ื ื™ืฉื˜ ื•ื•ืขืœืŸ ืฆื• ืจื™ืจื™ื™ื˜ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืงืึธื“ ืื•ืžืขื˜ื•ื. ื“ืขืจื™ื‘ืขืจ, OpenResty ืงืขื ืขืŸ ื–ื™ื™ืŸ ืคึผืœืึทื’ื“ ืื™ืŸ ื“ื™ ืคืจืึธื ื˜.
  • ืกื˜ืึทื˜ื™ืกื˜ื™ืง ืื•ืŸ ืึทื ืึทืœื™ื˜ื™ืงืก. ื™ื•ื–ืฉืึทื•ื•ืึทืœื™ NGINX ืื™ื– ื‘ื™ื™ ื“ื™ ืึทืจื™ื™ึทื ื’ืึทื ื’, ืื•ืŸ ืึทืœืข ืจื™ืงื•ื•ืขืก ื’ื™ื™ืŸ ื“ื•ืจืš ืขืก. ืขืก ืื™ื– ืื™ืŸ ื“ืขื ืึธืจื˜ ืึทื– ืขืก ืื™ื– ื–ื™ื™ืขืจ ื‘ืึทืงื•ื•ืขื ืฆื• ืงืœื™ื™ึทื‘ืŸ. ืื™ืจ ืงืขื ืขืŸ ื’ืœื™ื™ืš ืจืขื›ืขื ืขืŸ ืขืคึผืขืก ืื•ืŸ ื•ื•ืึทืจืคืŸ ืขืก ืขืจื’ืขืฅ, ืœืžืฉืœ, ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ Elasticsearch, Logstash, ืึธื“ืขืจ ื ืึธืจ ืฉืจื™ื™ึทื‘ืŸ ืขืก ืฆื• ื“ื™ ืงืœืึธืฅ ืื•ืŸ ื“ืขืžืึธืœื˜ ืฉื™ืงืŸ ืขืก ืขืจื’ืขืฅ.
  • ืžื•ืœื˜ื™-ื‘ืึทื ื™ืฆืขืจ ืกื™ืกื˜ืขืžืก. ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ืึธื ืœื™ื™ืŸ ื’ืึทืžืขืก ื–ืขื ืขืŸ ืื•ื™ืš ื–ื™ื™ืขืจ ื’ื•ื˜ ืฆื• ื˜ืึธืŸ. ื”ื™ื™ึทื ื˜ ืื™ืŸ ืงืึทืคึผืข ื˜ืึทื•ืŸ, ืืœืขืงืกืื ื“ืขืจ ื’ืœืึทื“ื™ืฉ ื•ื•ืขื˜ ื–ืึธื’ืŸ ืื™ืจ ื•ื•ื™ ืฆื• ื’ืขืฉื•ื•ื™ื ื“ ืคึผืจืึธื•ื˜ืึทื˜ื™ื™ืคึผ ืึท ืžื•ืœื˜ื™ืคึผืœื™ื™ึทืขืจ ืฉืคึผื™ืœ ื ื™ืฆืŸ OpenResty.
  • ื‘ืขื˜ืŸ ืคึฟื™ืœื˜ืจื™ืจื•ื ื’ (WAF). ืื™ืฆื˜ ืขืก ืื™ื– ืžืึธื“ืขืจืŸ ืฆื• ืžืึทื›ืŸ ืึทืœืข ืกืึธืจืฅ ืคื•ืŸ ื•ื•ืขื‘ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืคื™ืจืขื•ื•ืึทืœืœืก, ืขืก ื–ืขื ืขืŸ ืคื™ืœืข ื‘ืึทื“ื™ื ื•ื ื’ืก ื•ื•ืึธืก ืฆื•ืฉื˜ืขืœืŸ ื–ื™ื™. ืžื™ื˜ ื“ื™ ื”ื™ืœืฃ ืคื•ืŸ OpenResty, ืื™ืจ ืงืขื ืขืŸ ืžืึทื›ืŸ ื–ื™ืš ืึท ื•ื•ืขื‘ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืคื™ื™ืจื•ื•ืึทืœ, ื•ื•ืึธืก ื•ื•ืขื˜ ืคืฉื•ื˜ ืื•ืŸ ืœื™ื™ื›ื˜ ืคื™ืœื˜ืขืจ ืจื™ืงื•ื•ืขืก ืœื•ื™ื˜ ื“ื™ื™ืŸ ืจืขืงื•ื•ื™ืจืขืžืขื ืฅ. ืื•ื™ื‘ ืื™ืจ ื”ืึธื˜ ืคึผื™ื˜ื”ืึธืŸ, ืื™ืจ ืคึฟืึทืจืฉื˜ื™ื™ืŸ ืึทื– PHP ื•ื•ืขื˜ ื‘ืืฉื˜ื™ืžื˜ ื ื™ื˜ ื–ื™ื™ืŸ ื™ื ื“ื–ืฉืขืงื˜ื™ื“ ืฆื• ืื™ืจ, ืกื™ื™ึทื“ืŸ, ืคื•ืŸ ืงื•ืจืก, ืื™ืจ ืจื•ื™ื’ ืขืก ืขืจื’ืขืฅ ืคึฟื•ืŸ ื“ื™ ืงืึทื ืกืึธื•ืœ. ืื™ืจ ื•ื•ื™ืกืŸ ืึทื– ืื™ืจ ื”ืึธื‘ืŸ MySQL ืื•ืŸ Python. ืžื™ืกื˜ืึธืžืข, ื“ืึธ ื–ื™ื™ ืงืขื ืขืŸ ืคึผืจื•ื‘ื™ืจืŸ ืฆื• ื˜ืึธืŸ ืขื˜ืœืขื›ืข ื•ื•ืขื’ื•ื•ื™ื™ึทื–ืขืจ ื˜ืจืึทื•ื•ืขืจืกืึทืœ ืื•ืŸ ืึทืจื™ื™ึทื ืฉืคึผืจื™ืฆืŸ ืขืคึผืขืก ืื™ืŸ ื“ื™ ื“ืึทื˜ืึทื‘ื™ื™ืก. ื“ืขืจื™ื‘ืขืจ, ืื™ืจ ืงืขื ืขืŸ ืคื™ืœื˜ืขืจ ืื•ื™ืก ืฉื˜ื•ื ืจื™ืงื•ื•ืขืก ื’ืขืฉื•ื•ื™ื ื“ ืื•ืŸ ื‘ื™ืœื™ืง ืจืขื›ื˜ ืื™ืŸ ื“ื™ ืคืจืึธื ื˜.
  • ืงื”ื™ืœื”. ื–ื™ื ื˜ OpenResty ืื™ื– ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ NGINX, ืขืก ื”ืื˜ ืึท ื‘ืึธื ื•ืก - ื“ืึธืก ืื™ื– NGINX ืงื”ืœ. ืขืก ืื™ื– ื–ื™ื™ืขืจ ื’ืจื•ื™ืก, ืื•ืŸ ืคื™ืœืข ืคื•ืŸ โ€‹โ€‹ื“ื™ ืคึฟืจืื’ืŸ ื•ื•ืึธืก ืื™ืจ ื•ื•ืขื˜ ื”ืึธื‘ืŸ ืื™ืŸ ืขืจืฉื˜ืขืจ ื”ืึธื‘ืŸ ืฉื•ื™ืŸ ื’ืขืขื ื˜ืคืขืจื˜ ื“ื•ืจืš ื“ื™ NGINX ืงื”ืœ.

    ืœื•ืึท ื“ืขื•ื•ืขืœืึธืคึผืขืจืก. ื ืขื›ื˜ืŸ ืื™ืš ื’ืขืจืขื“ื˜ ืžื™ื˜ ื“ื™ ื’ื™ื™ื– ื•ื•ืึธืก ื–ืขื ืขืŸ ื’ืขืงื•ืžืขืŸ ืฆื• ื“ื™ HighLoad ++ ื˜ืจื™ื™ื ื™ื ื’ ื˜ืึธื’ ืื•ืŸ ื’ืขื”ืขืจื˜ ืึทื– ื‘ืœื•ื™ื– Tarantool ืื™ื– ื’ืขืฉืจื™ื‘ืŸ ืื™ืŸ ืœื•ืึท. ื“ืึธืก ืื™ื– ื ื™ืฉื˜ ืึทื–ื•ื™, ืึท ืคึผืœืึทืฅ ืคื•ืŸ ื–ืื›ืŸ ื–ืขื ืขืŸ ื’ืขืฉืจื™ื‘ืŸ ืื™ืŸ ืœื•ืึท. ื‘ื™ื™ืฉืคื™ืœืŸ: OpenResty, Prosody XMPP ืกืขืจื•ื•ืขืจ, Love2D ืฉืคึผื™ืœ ืžืึธื˜ืึธืจ, Lua ืื™ื– ืกืงืจื™ืคึผื˜ื™ื“ ืื™ืŸ Warcraft ืื•ืŸ ืื ื“ืขืจืฉ. ืขืก ื–ืขื ืขืŸ ืคื™ืœืข Lua ื“ืขื•ื•ืขืœืึธืคึผืขืจืก, ื–ื™ื™ ื”ืึธื‘ืŸ ืึท ื’ืจื•ื™ืก ืื•ืŸ ืึธืคึผืจื•ืคื™ืง ืงื”ืœ. ืึทืœืข ืžื™ื™ืŸ ืœื•ืึท ืคึฟืจืื’ืŸ ื–ืขื ืขืŸ ื’ืขืขื ื˜ืคืขืจื˜ ืื™ืŸ ืึท ื‘ื™ืกืœ ืฉืขื”. ื•ื•ืขืŸ ืื™ืจ ืฉืจื™ื™ื‘ื˜ ืฆื• ื“ื™ ืžื™ื™ืœื™ื ื’ ืจืฉื™ืžื”, ืžืžืฉ ืื™ืŸ ืึท ื‘ื™ืกืœ ืžื™ื ื•ื˜ ืขืก ื–ืขื ืขืŸ ืฉื•ื™ืŸ ืึท ืคึผืœืึทืฅ ืคื•ืŸ ืขื ื˜ืคึฟืขืจืก, ื–ื™ื™ ื‘ืึทืฉืจื™ื™ึทื‘ืŸ ื•ื•ืึธืก ืื•ืŸ ื•ื•ื™, ื•ื•ืึธืก ืื™ื– ื•ื•ืึธืก. ืขืก ืื™ื– ื’ืขื•ื•ืืœื“ื™ื’. ืฆื•ื ื‘ืึทื“ื•ื™ืขืจืŸ, ืึทื–ืึท ืžื™ืŸ ืึธืคื ื”ืึทืจืฆื™ืง ืงื”ืœ ืื™ื– ื ื™ืฉื˜ ืื•ืžืขื˜ื•ื.
    OpenResty ื”ืื˜ GitHub, ื•ื•ื• ืื™ืจ ืงืขื ืขืŸ ืขืคึฟืขื ืขืŸ ืึทืŸ ืึทืจื•ื™ืกื’ืขื‘ืŸ ืื•ื™ื‘ ืขืคึผืขืก ื‘ืจื™ื™ืงืก. ืขืก ืื™ื– ืึท ืžื™ื™ืœื™ื ื’ ืจืฉื™ืžื” ืื•ื™ืฃ Google ื’ืจื•ืคึผืขืก ื•ื•ื• ืื™ืจ ืงืขื ืขืŸ ื“ื™ืกืงื•ื˜ื™ืจืŸ ืึทืœื’ืขืžื™ื™ืŸ ื™ืฉื•ื–, ืขืก ืื™ื– ืึท ืžื™ื™ืœื™ื ื’ ืจืฉื™ืžื” ืื™ืŸ ื›ื™ื ืขื–ื™ืฉ - ืื™ืจ ืงื™ื™ื ืžืึธืœ ื•ื•ื™ืกืŸ, ืืคึฟืฉืจ ืื™ืจ ื˜ืึธืŸ ื ื™ื˜ ืจืขื“ืŸ ืขื ื’ืœื™ืฉ, ืึธื‘ืขืจ ืื™ืจ ื•ื•ื™ืกืŸ ื›ื™ื ืขื–ื™ืฉ.

ืจืขื–ื•ืœื˜ืึทื˜ืŸ ืคื•ืŸ

  • ืื™ืš ื”ืึธืคึฟืŸ ืื™ืš ืื™ื– ื’ืขื•ื•ืขืŸ ื‘ื™ื›ื•ืœืช ืฆื• ืงืึทื ื•ื•ื™ื™ ืึทื– OpenResty ืื™ื– ืึท ื–ื™ื™ืขืจ ื‘ืึทืงื•ื•ืขื ืคืจื™ื™ืžื•ื•ืขืจืง ื˜ื™ื™ืœืขืจื“ ืคึฟืึทืจ ื“ื™ ื•ื•ืขื‘.
  • ืขืก ื”ืื˜ ืึท ื ื™ื“ืขืจื™ืง ืฉื•ื•ืขืœ ืคื•ืŸ ืคึผืึธื–ื™ืฆื™ืข, ื–ื™ื ื˜ ื“ื™ ืงืึธื“ ืื™ื– ืขื ืœืขืš ืฆื• ื•ื•ืึธืก ืžื™ืจ ืฉืจื™ื™ึทื‘ืŸ, ื“ื™ ืฉืคึผืจืึทืš ืื™ื– ื’ืึทื ืฅ ืคึผืฉื•ื˜ ืื•ืŸ ืžื™ื ื™ืžืึทืœื™ืกื˜ื™ืง.
  • ืขืก ื’ื™ื˜ ื™ื™ืกื™ื ื’ืงืจืึทื ืึทืก ืื™ืš / ืึธ ืึธืŸ ืงืึทืœืœื‘ืึทืงืงืก, ืžื™ืจ ื•ื•ืขืœืŸ ื ื™ืฉื˜ ื”ืึธื‘ืŸ ืœืึธืงืฉืŸ ื•ื•ื™ ืžื™ืจ ืงืขื ืขืŸ ืžืืœ ืฉืจื™ื™ึทื‘ืŸ ืื™ืŸ NodeJS.
  • ืขืก ื”ืื˜ ืึทืŸ ื’ืจื™ื ื’ ื“ื™ืคึผืœื•ื™ืžืึทื ื˜, ื•ื•ื™ื™ึทืœ ืžื™ืจ ื ืึธืจ ื“ืึทืจืคึฟืŸ NGINX ืžื™ื˜ ื“ื™ ืจืขื›ื˜ ืžืึธื“ื•ืœืข ืื•ืŸ ืื•ื ื“ื–ืขืจ ืงืึธื“, ืื•ืŸ ืึทืœืฅ ืึทืจื‘ืขื˜ ื’ืœื™ื™ืš.
  • ื’ืจื•ื™ืก ืื•ืŸ ืึธืคึผืจื•ืคื™ืง ืงื”ืœ.

ืื™ืš ื”ืื‘ ื ื™ืฉื˜ ื“ืขืจืฆื™ื™ืœื˜ ืื™ืŸ ื“ืขื˜ืึทืœ ื•ื•ื™ ืจื•ื˜ื™ื ื’ ืื™ื– ื“ื•ืจื›ื’ืขืงืึธื›ื˜, ืขืก ืื™ื– ื’ืขื•ื•ืขืŸ ืึท ื–ื™ื™ืขืจ ืœืึทื ื’ ื’ืขืฉื™ื›ื˜ืข.

ื’ื•ื˜ ื’ืœื™ืง!

ืฉืคึผื™ืœ ื•ื•ื™ื“ืขื

ื•ื•ืœืื“ื™ืžื™ืจ ืคึผืจืึธื˜ืึทืกืึธื•ื• - OpenResty: ื•ื•ืขื ื“ืŸ NGINX ืื™ืŸ ืึท ืคื•ืœ-ืคืœืขื“ื–ืฉื“ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืกืขืจื•ื•ืขืจ

ืžืงื•ืจ: www.habr.com

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’