OpenResty: ื”ืคื™ื›ืช NGINX ืœืฉืจืช ื™ื™ืฉื•ืžื™ื ืžืœื

OpenResty: ื”ืคื™ื›ืช NGINX ืœืฉืจืช ื™ื™ืฉื•ืžื™ื ืžืœืืื ื• ืžืคืจืกืžื™ื ืฉื•ื‘ ืืช ืชืžืœื™ืœ ื“ื•"ื— ื”ื›ื ืก HighLoad ++ 2016, ืฉื”ืชืงื™ื™ื ื‘ืกืงื•ืœืงื•ื‘ื• ืœื™ื“ ืžื•ืกืงื‘ื” ื‘-7-8 ื‘ื ื•ื‘ืžื‘ืจ ื‘ืฉื ื” ืฉืขื‘ืจื”. ื•ืœื“ื™ืžื™ืจ ืคืจื•ื˜ืกื•ื‘ ืžืกื‘ื™ืจ ื›ื™ืฆื“ ืœื”ืจื—ื™ื‘ ืืช ื”ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ืฉืœ NGINX ืขื OpenResty ื•-Lua.

ืฉืœื•ื ืœื›ื•ืœื, ืฉืžื™ ื•ืœื“ื™ืžื™ืจ ืคืจื•ื˜ืกื•ื‘, ืื ื™ ืขื•ื‘ื“ ื‘-Parallels. ืื ื™ ืืกืคืจ ืœืš ืงืฆืช ืขืœ ืขืฆืžื™. ืื ื™ ืžื‘ืœื” ืฉืœื•ืฉื” ืจื‘ืขื™ื ืžื—ื™ื™ ื‘ื›ืชื™ื‘ืช ืงื•ื“. ื”ืคื›ืชื™ ืœืžืชื›ื ืช ืขื“ ื”ื™ืกื•ื“ ื‘ืžื•ื‘ืŸ ื”ืžื™ืœื•ืœื™: ืœืคืขืžื™ื ืื ื™ ืจื•ืื” ืงื•ื“ ื‘ื—ืœื•ืžื•ืช ืฉืœื™. ืจื‘ืข ืžื”ื—ื™ื™ื ื”ื•ื ืคื™ืชื•ื— ืชืขืฉื™ื™ืชื™, ื›ืชื™ื‘ืช ืงื•ื“ ืฉื ื›ื ืก ื™ืฉืจ ืœื™ื™ืฆื•ืจ. ืงื•ื“ ืฉื—ืœืงื›ื ืžืฉืชืžืฉื™ื ื‘ื• ืื‘ืœ ืœื ืžื‘ื™ื ื™ื ืื•ืชื•.

ืื– ืืชื” ืžื‘ื™ืŸ ื›ืžื” ื–ื” ื”ื™ื” ื’ืจื•ืข. ื›ืฉื”ื™ื™ืชื™ ืงืฆืช ืฆืขื™ืจ, ื‘ืืชื™ ื•ืงื™ื‘ืœืชื™ ืืช ืžืกื“ื™ ื”ื ืชื•ื ื™ื ื”ืืœื” ืฉืœ ืฉื ื™ ื˜ืจื”-ื‘ื™ื™ื˜. ื–ื” ืขื•ืžืก ื’ื‘ื•ื” ืœื›ื•ืœื ื›ืืŸ ืขื›ืฉื™ื•. ื”ืœื›ืชื™ ืœื›ื ืกื™ื ื•ืฉืืœืชื™: "ื—ื‘ืจ'ื”, ืชื’ื™ื“ื• ืœื™, ื™ืฉ ืœื›ื ื‘ื™ื’ ื“ืื˜ื”, ื”ื›ืœ ืžื’ื ื™ื‘? ื›ืžื” ื‘ืกื™ืกื™ื ื™ืฉ ืœืš ืฉื? ื”ื ืขื ื• ืœื™: "ื™ืฉ ืœื ื• 100 ื’ื™ื’ื”-ื‘ื™ื™ื˜!" ืืžืจืชื™: "ืžื’ื ื™ื‘, 100 ื’ื™ื’ื”-ื‘ื™ื™ื˜!" ื•ื—ืฉื‘ืชื™ ืœืขืฆืžื™ ืื™ืš ืœืฉืžื•ืจ ื‘ื–ื”ื™ืจื•ืช ืขืœ ืคื ื™ ื”ืคื•ืงืจ ืฉืœื™. ืืชื” ื—ื•ืฉื‘, ื›ืŸ, ื”ื—ื‘ืจ'ื” ืžื’ื ื™ื‘ื™ื, ื•ืื– ืืชื” ื—ื•ื–ืจ ื•ืžืชืขืกืง ืขื ืžืกื“ื™ ื”ื ืชื•ื ื™ื ื”ืจื‘-ื˜ืจื”-ื‘ืชื™ื ื”ืืœื”. ื•ื–ื” ืœื”ื™ื•ืช ื–ื•ื˜ืจ. ืืชื” ื™ื›ื•ืœ ืœื“ืžื™ื™ืŸ ืื™ื–ื• ืžื›ื” ื–ื•?

ืื ื™ ื™ื•ื“ืข ื™ื•ืชืจ ืž-20 ืฉืคื•ืช ืชื›ื ื•ืช. ื–ื” ืžืฉื”ื• ืฉื”ื™ื™ืชื™ ืฆืจื™ืš ืœื”ื‘ื™ืŸ ื›ืฉืขื‘ื“ืชื™. ื”ื ื ื•ืชื ื™ื ืœืš ืงื•ื“ ื‘-Erlang, C, C++, Lua, Python, Ruby, ืžืฉื”ื• ืื—ืจ, ื•ืืชื” ืฆืจื™ืš ืœื—ืชื•ืš ื”ื›ืœ. ื‘ืื•ืคืŸ ื›ืœืœื™, ื”ื™ื™ืชื™ ื—ื™ื™ื‘. ืœื ื ื™ืชืŸ ื”ื™ื” ืœื—ืฉื‘ ืืช ื”ืžืกืคืจ ื”ืžื“ื•ื™ืง, ืื‘ืœ ืื™ ืฉื ื‘ืกื‘ื™ื‘ื•ืช ื”-20 ื”ืžืกืคืจ ืื‘ื“.

ืžื›ื™ื•ื•ืŸ ืฉื›ืœ ื”ื ื•ื›ื—ื™ื ื™ื•ื“ืขื™ื ืžื” ื–ื” Parallels ื•ืžื” ืื ื—ื ื• ืขื•ืฉื™ื, ืื ื™ ืœื ืื“ื‘ืจ ืขืœ ื›ืžื” ืื ื—ื ื• ืžื’ื ื™ื‘ื™ื ื•ืžื” ืื ื—ื ื• ืขื•ืฉื™ื. ืื ื™ ืจืง ืื’ื™ื“ ืœืš ืฉื™ืฉ ืœื ื• 13 ืžืฉืจื“ื™ื ื‘ืจื—ื‘ื™ ื”ืขื•ืœื, ื™ื•ืชืจ ืž-300 ืขื•ื‘ื“ื™ื, ืคื™ืชื•ื— ื‘ืžื•ืกืงื‘ื”, ื˜ืืœื™ืŸ ื•ืžืœื˜ื”. ืื ืชืจืฆื•, ืชื•ื›ืœื• ืœืงื—ืช ืื•ืชื• ื•ืœืขื‘ื•ืจ ืœืžืœื˜ื” ืื ืงืจ ื‘ื—ื•ืจืฃ ื•ืืชื ืฆืจื™ื›ื™ื ืœื—ืžื ืืช ื”ื’ื‘.

ืกืคืฆื™ืคื™ืช, ื”ืžื—ืœืงื” ืฉืœื ื• ื›ื•ืชื‘ืช ื‘ืคื™ื™ืชื•ืŸ 2. ืื ื—ื ื• ื‘ืขืกืง ื•ืื™ืŸ ืœื ื• ื–ืžืŸ ืœื™ื™ืฉื ื˜ื›ื ื•ืœื•ื’ื™ื•ืช ืื•ืคื ืชื™ื•ืช, ืื– ืื ื—ื ื• ืกื•ื‘ืœื™ื. ืื ื—ื ื• ืžืฉืชืžืฉื™ื ื‘ื’'ื ื’ื• ื›ื™ ื™ืฉ ื‘ื• ื”ื›ืœ, ื•ืœืงื—ื ื• ืืช ืžื” ืฉื”ื™ื” ืžื™ื•ืชืจ ื•ื–ืจืงื ื•. ื’ื MySQL, Redis ื•-NGINX. ื™ืฉ ืœื ื• ื’ื ื”ืจื‘ื” ื“ื‘ืจื™ื ืžื’ื ื™ื‘ื™ื ืื—ืจื™ื. ื™ืฉ ืœื ื• MongoDB, ื™ืฉ ืœื ื• ืืจื ื‘ื•ืช ืฉืžืชืจื•ืฆืฆื•ืช, ื™ืฉ ืœื ื• ื”ื›ืœ - ืื‘ืœ ื–ื” ืœื ืฉืœื™, ื•ืื ื™ ืœื ืขื•ืฉื” ืืช ื–ื”.

OpenResty

ืกื™ืคืจืชื™ ืขืœ ืขืฆืžื™. ื‘ื•ืื• ืœื”ื‘ื™ืŸ ืขืœ ืžื” ืื ื™ ื”ื•ืœืš ืœื“ื‘ืจ ื”ื™ื•ื:

  • ืžื”ื™ OpenResty ื•ืขื ืžื” ืื•ื›ืœื™ื ืื•ืชื”?
  • ืœืžื” ืœื”ืžืฆื™ื ื’ืœื’ืœ ื ื•ืกืฃ ื›ืฉื™ืฉ ืœื ื• Python, NodeJS, PHP, Go ื•ืขื•ื“ ื“ื‘ืจื™ื ืžื’ื ื™ื‘ื™ื ืฉื›ื•ืœื ืžืจื•ืฆื™ื ืžื”ื?
  • ื•ืขื•ื“ ื›ืžื” ื“ื•ื’ืžืื•ืช ืžื”ื—ื™ื™ื. ื”ื™ื™ืชื™ ืฆืจื™ืš ืœื—ืชื•ืš ืืช ื”ื“ื•ื— ื”ืจื‘ื” ื›ื™ ื–ื” ืœืงื— ืœื™ 3,5 ืฉืขื•ืช, ืื– ื™ื”ื™ื• ื›ืžื” ื“ื•ื’ืžืื•ืช.

OpenResty ื”ื•ื NGINX. ื‘ื–ื›ื•ืชื• ื™ืฉ ืœื ื• ืฉืจืช ืื™ื ื˜ืจื ื˜ ืžืœื ืฉื›ืชื•ื‘ ื”ื™ื˜ื‘ ื•ืขื•ื‘ื“ ื‘ืžื”ื™ืจื•ืช. ืื ื™ ื—ื•ืฉื‘ ืฉืจื•ื‘ื ื• ืžืฉืชืžืฉื™ื ื‘-NGINX ื‘ื™ื™ืฆื•ืจ. ื›ื•ืœื›ื ื™ื•ื“ืขื™ื ืฉื”ื•ื ืžื”ื™ืจ ื•ืžื’ื ื™ื‘. ื”ื ื™ืฆืจื• ื‘ื• ืงืœื˜/ืคืœื˜ ืกื™ื ื›ืจื•ื ื™ ืžื’ื ื™ื‘, ืื– ืื ื—ื ื• ืœื ืฆืจื™ื›ื™ื ืœืกื•ื‘ื‘ ืฉื•ื ื“ื‘ืจ, ื‘ื“ื™ื•ืง ื›ืžื• ืฉื”ื ืขืฉื• ื‘-Python. Gevent ื–ื” ืžื’ื ื™ื‘, ืžืขื•ืœื”, ืื‘ืœ ืื ืชื›ืชื•ื‘ ืงื•ื“ C ื•ืžืฉื”ื• ื™ืฉืชื‘ืฉ, ืื– ืขื Gevent ืชืฉืชื’ืข ืœืืคื•ืช ืื•ืชื•. ื”ื™ื™ืชื” ืœื™ ื”ื—ื•ื•ื™ื”: ืœืงื— ื™ื•ืžื™ื™ื ืฉืœืžื™ื ืœื”ื‘ื™ืŸ ืžื” ื”ืฉืชื‘ืฉ ืฉื. ืื ืžื™ืฉื”ื• ืœื ื”ื™ื” ื—ื•ืคืจ ื›ืžื” ืฉื‘ื•ืขื•ืช, ืžื•ืฆื ืืช ื”ื‘ืขื™ื”, ื›ื•ืชื‘ ื‘ืื™ื ื˜ืจื ื˜ ื•ื’ื•ื’ืœ ืœื ื”ื™ื” ืžื•ืฆื ืื•ืชื”, ืื– ื”ื™ื™ื ื• ืžืฉืชื’ืขื™ื ืœื’ืžืจื™.

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

Nginx ืžื’ื ื™ื‘, ืื‘ืœ ื™ืฉ ื‘ืขื™ื” ืื—ืช: ื”ื™ื ืœื ืžืกืคื™ืง ื’ืžื™ืฉื”, ืืคื™ืœื• ืขื ื›ืœ ื”ืคื™ืฆ'ืจื™ื ื”ืžื’ื ื™ื‘ื™ื ืฉื”ื—ื‘ืจ'ื” ื“ื—ืกื• ืœืชื•ืš ื”ืชืฆื•ืจื”, ืœืžืจื•ืช ืžื” ืฉืืคืฉืจ ืœื”ื’ื“ื™ืจ. ื”ื›ื•ื— ื”ื–ื” ืœื ืžืกืคื™ืง. ื–ื• ื”ืกื™ื‘ื” ืฉื”ื—ื‘ืจ'ื” ืžื˜ืื•ื‘ืื•, ืœืคื ื™ ื–ืžืŸ ืจื‘, ื›ืš ื ืจืื” ืœืคื ื™ ืฉืžื•ื ื” ืฉื ื™ื, ื‘ื ื• ืืช ืœื•ืื” ืœืชื•ื›ื•. ืžื” ื–ื” ื ื•ืชืŸ?

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

ื›ืชื•ืฆืื” ืžื›ืš, ื–ื” ื ืจืื” ื›ืš:

OpenResty: ื”ืคื™ื›ืช NGINX ืœืฉืจืช ื™ื™ืฉื•ืžื™ื ืžืœื

ื™ืฉ ื›ืืŸ ื”ืจื‘ื”. OpenResty ืืกืคื” ื—ื‘ื•ืจื” ืฉืœ ืžื•ื“ื•ืœื™ื, ื’ื luash ื•ื’ื ืžื ื•ืขื™ื™ื. ื•ื™ืฉ ืœืš ื”ื›ืœ ืžื•ื›ืŸ - ืคืจื•ืก ื•ืขื•ื‘ื“.

ื“ื•ื’ืžืื•ืช

ื“ื™ ืœืžื™ืœื™ื, ื‘ื•ืื• ื ืขื‘ื•ืจ ืœืงื•ื“. ื”ื ื” ืงืฆืช ืฉืœื•ื ืขื•ืœื:

OpenResty: ื”ืคื™ื›ืช NGINX ืœืฉืจืช ื™ื™ืฉื•ืžื™ื ืžืœื

ืžื” ื™ืฉ ืฉื? ื–ื”ื• ืžื™ืงื•ื ืฉืœ Engins. ืื ื—ื ื• ืœื ื“ื•ืื’ื™ื, ืื ื—ื ื• ืœื ื›ื•ืชื‘ื™ื ื ื™ืชื•ื‘ ืžืฉืœื ื•, ืื ื—ื ื• ืœื ืœื•ืงื—ื™ื ืื™ื–ื” ืžื•ื›ืŸ - ื›ื‘ืจ ื™ืฉ ืœื ื• ืืช ื–ื” ื‘-NGINX, ืื ื—ื ื• ื—ื™ื™ื ื—ื™ื™ื ื˜ื•ื‘ื™ื ื•ืขืฆืœื ื™ื.

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

ื›ืชื•ืฆืื” ืžื›ืš, ื–ื” ื™ื™ืจืื” ื›ืš:

OpenResty: ื”ืคื™ื›ืช NGINX ืœืฉืจืช ื™ื™ืฉื•ืžื™ื ืžืœื

ืื‘ืœ ื‘ื•ืื• ื ื—ื–ื•ืจ ืœืขื•ืœื ื”ืืžื™ืชื™. ืืฃ ืื—ื“ ืœื ืคื•ืจืก ืืช Hello World ืœื™ื™ืฆื•ืจ. ื”ืืคืœื™ืงืฆื™ื” ืฉืœื ื• ื‘ื“ืจืš ื›ืœืœ ืขื•ื‘ืจืช ืœืžืกื“ ื”ื ืชื•ื ื™ื ืื• ืœืžืงื•ื ืื—ืจ ื•ืจื•ื‘ ื”ื–ืžืŸ ืžื—ื›ื” ืœืชื’ื•ื‘ื”.

OpenResty: ื”ืคื™ื›ืช NGINX ืœืฉืจืช ื™ื™ืฉื•ืžื™ื ืžืœื

ื”ื•ื ืจืง ื™ื•ืฉื‘ ื•ืžื—ื›ื”. ื–ื” ืœื ืžืื•ื“ ื˜ื•ื‘. ื›ืฉืžื’ื™ืขื™ื 100.000 ืžืฉืชืžืฉื™ื, ื–ื” ืžืื•ื“ ืงืฉื” ืœื ื•. ืื– ื‘ื•ืื• ื ืฉืชืžืฉ ื‘ืืคืœื™ืงืฆื™ื” ืคืฉื•ื˜ื” ื›ื“ื•ื’ืžื”. ื ื—ืคืฉ ืชืžื•ื ื•ืช, ืœืžืฉืœ, ืฉืœ ื—ืชื•ืœื™ื. ืื‘ืœ ืœื ืจืง ื ื—ืคืฉ, ื ืจื—ื™ื‘ ืืช ืžื™ืœื•ืช ื”ืžืคืชื—, ื•ืื ื”ืžืฉืชืžืฉ ื—ื™ืคืฉ "ื—ืชืœืชื•ืœื™ื", ื ืžืฆื ื—ืชื•ืœื™ื, ื—ืชื•ืœื™ื ืคืจื•ื•ืชื™ื™ื ื•ื›ืŸ ื”ืœืื”. ืจืืฉื™ืช, ืขืœื™ื ื• ืœืงื‘ืœ ืืช ื ืชื•ื ื™ ื”ื‘ืงืฉื” ื‘-backend. ื–ื” ื ืจืื” ื›ืžื• ื–ื”:

OpenResty: ื”ืคื™ื›ืช NGINX ืœืฉืจืช ื™ื™ืฉื•ืžื™ื ืžืœื

ืฉืชื™ ืฉื•ืจื•ืช ืžืืคืฉืจื•ืช ืœืš ืœืงืœื•ื˜ ืคืจืžื˜ืจื™ื ืฉืœ GET, ืœืœื ืกื™ื‘ื•ื›ื™ื. ืœืื—ืจ ืžื›ืŸ, ื ื ื™ื—, ืžืžืกื“ ื ืชื•ื ื™ื ืขื ืกื™ืžืŸ ืœืžื™ืœืช ืžืคืชื— ื•ื”ืจื—ื‘ื”, ืื ื• ืžืงื‘ืœื™ื ืžื™ื“ืข ื–ื” ื‘ืืžืฆืขื•ืช ืฉืื™ืœืชืช SQL ืจื’ื™ืœื”. ื–ื” ืคืฉื•ื˜. ื–ื” ื ืจืื” ื›ืžื• ื–ื”:

OpenResty: ื”ืคื™ื›ืช NGINX ืœืฉืจืช ื™ื™ืฉื•ืžื™ื ืžืœื

ื—ื™ื‘ื•ืจ ื”ืกืคืจื™ื™ื” resty.mysql, ืฉื›ื‘ืจ ื™ืฉ ืœื ื• ื‘ืขืจื›ื”. ืื ื—ื ื• ืœื ืฆืจื™ื›ื™ื ืœื”ืชืงื™ืŸ ื›ืœื•ื, ื”ื›ืœ ืžื•ื›ืŸ. ืื ื• ืžืฆื™ื™ื ื™ื ื›ื™ืฆื“ ืœื”ืชื—ื‘ืจ ื•ืœื‘ืฆืข ืฉืื™ืœืชืช SQL:

OpenResty: ื”ืคื™ื›ืช NGINX ืœืฉืจืช ื™ื™ืฉื•ืžื™ื ืžืœื

ืงืฆืช ืžืคื—ื™ื“ ื›ืืŸ, ืื‘ืœ ื”ื›ืœ ืขื•ื‘ื“. ื›ืืŸ 10 ื”ื•ื ื”ื’ื‘ื•ืœ. ืื ื—ื ื• ืฉื•ืœืคื™ื 10 ืขืจื›ื™ื, ืื ื—ื ื• ืขืฆืœื ื™ื, ืื ื—ื ื• ืœื ืจื•ืฆื™ื ืœื”ืจืื•ืช ื™ื•ืชืจ. ืฉื›ื—ืชื™ ืžื”ื’ื‘ื•ืœ ื‘-SQL.

ืœืื—ืจ ืžื›ืŸ ืื ื• ืžื•ืฆืื™ื ืชืžื•ื ื•ืช ืœื›ืœ ื”ืฉืื™ืœืชื•ืช. ืื ื—ื ื• ืื•ืกืคื™ื ื—ื‘ื•ืจื” ืฉืœ ื‘ืงืฉื•ืช ื•ืžืžืœืื™ื ื˜ื‘ืœืช Lua ืฉื ืงืจืืช reqs, ื•ืื ื—ื ื• ื›ืŸ ngx.location.capture_multi.

OpenResty: ื”ืคื™ื›ืช NGINX ืœืฉืจืช ื™ื™ืฉื•ืžื™ื ืžืœื

ื›ืœ ื”ื‘ืงืฉื•ืช ื”ืœืœื• ื ืฉืœื—ื•ืช ื‘ืžืงื‘ื™ืœ, ื•ื”ืชืฉื•ื‘ื•ืช ืžื•ื—ื–ืจื•ืช ืืœื™ื ื•. ื–ืžืŸ ื”ืคืขื•ืœื” ืฉื•ื•ื” ืœื–ืžืŸ ื”ืชื’ื•ื‘ื” ืฉืœ ื”ืื™ื˜ื™ ื‘ื™ื•ืชืจ. ืื ื›ื•ืœื ื• ื ืจื™ื ืชื•ืš 50 ืžื™ืœื™ืฉื ื™ื•ืช, ื•ืฉืœื—ื ื• ืžืื” ื‘ืงืฉื•ืช, ืื– ื ืงื‘ืœ ืชืฉื•ื‘ื” ืชื•ืš 50 ืžื™ืœื™ืฉื ื™ื•ืช.

ืžื›ื™ื•ื•ืŸ ืฉืื ื—ื ื• ืขืฆืœื ื™ื ื•ืœื ืจื•ืฆื™ื ืœื›ืชื•ื‘ HTTP ื•ื˜ื™ืคื•ืœ ื‘ืžื˜ืžื•ืŸ, ืื ื—ื ื• ื ื’ืจื•ื ืœ-NGINX ืœืขืฉื•ืช ื”ื›ืœ ื‘ืฉื‘ื™ืœื ื•. ื›ืคื™ ืฉืจืื™ืช, ื”ื™ื™ืชื” ื‘ืงืฉื” ืœ url/fetch, ื”ื ื” ื”ื•ื:

OpenResty: ื”ืคื™ื›ืช NGINX ืœืฉืจืช ื™ื™ืฉื•ืžื™ื ืžืœื

ืื ื—ื ื• ืขื•ืฉื™ื ืืช ื–ื” ืคืฉื•ื˜ proxy_pass, ืื ื• ืžืฆื™ื™ื ื™ื ื”ื™ื›ืŸ ืœืฉืžื•ืจ ื‘ืžื˜ืžื•ืŸ, ื›ื™ืฆื“ ืœืขืฉื•ืช ื–ืืช, ื•ื”ื›ืœ ืขื•ื‘ื“ ืขื‘ื•ืจื ื•.

ืื‘ืœ ื–ื” ืœื ืžืกืคื™ืง, ืื ื—ื ื• ืขื“ื™ื™ืŸ ืฆืจื™ื›ื™ื ืœืชืช ืืช ื”ื ืชื•ื ื™ื ืœืžืฉืชืžืฉ. ื”ืจืขื™ื•ืŸ ื”ืคืฉื•ื˜ ื‘ื™ื•ืชืจ ื”ื•ื ืœืขืฉื•ืช ื”ื›ืœ ื‘ืกื™ื“ืจื” ื‘-JSON, ื‘ืงืœื•ืช, ื‘ืฉืชื™ ืฉื•ืจื•ืช. ืื ื—ื ื• ื ื•ืชื ื™ื Content-Type, ืื ื—ื ื• ื ื•ืชื ื™ื JSON.

ืื‘ืœ ื™ืฉ ืงื•ืฉื™ ืื—ื“: ื”ืžืฉืชืžืฉ ืœื ืจื•ืฆื” ืœืงืจื•ื JSON. ืื ื—ื ื• ืฆืจื™ื›ื™ื ืœืžืฉื•ืš ืžืคืชื—ื™ื ื—ื–ื™ืชื™ื™ื. ืœืคืขืžื™ื ืื ื—ื ื• ืœื ืจื•ืฆื™ื ืœืขืฉื•ืช ืืช ื–ื” ื‘ื”ืชื—ืœื”. ื•ืžื•ืžื—ื™ SEO ื™ื’ื™ื“ื• ืฉืื ืื ื—ื ื• ืžื—ืคืฉื™ื ืชืžื•ื ื•ืช, ืื– ื–ื” ืœื ืžืฉื ื” ืœื”ื. ื•ืื ื ื™ืชืŸ ืœื”ื ืงืฆืช ืชื•ื›ืŸ, ื”ื ื™ื’ื™ื“ื• ืฉืžื ื•ืขื™ ื”ื—ื™ืคื•ืฉ ืฉืœื ื• ืœื ืžื•ืกื™ืคื™ื ืฉื•ื ื“ื‘ืจ ืœืื™ื ื“ืงืก.

ืžื” ืœืขืฉื•ืช ื‘ื ื™ื“ื•ืŸ? ื›ืžื•ื‘ืŸ, ื ื™ืชืŸ ืœืžืฉืชืžืฉ HTML. ื™ืฆื™ืจื” ื‘ื™ื“ ื”ื™ื ืœื comme il faut, ืื– ืื ื—ื ื• ืจื•ืฆื™ื ืœื”ืฉืชืžืฉ ื‘ืชื‘ื ื™ื•ืช. ื‘ืฉื‘ื™ืœ ื–ื” ื™ืฉ ืกืคืจื™ื™ื” lua-resty-template.

OpenResty: ื”ืคื™ื›ืช NGINX ืœืฉืจืช ื™ื™ืฉื•ืžื™ื ืžืœื

ื‘ื˜ื— ืจืื™ืช ืืช ืฉืœื•ืฉ ื”ืื•ืชื™ื•ืช ื”ืžืคื—ื™ื“ื•ืช OPM. OpenResty ืžื’ื™ืข ืขื ืžื ื”ืœ ื—ื‘ื™ืœื•ืช ืžืฉืœื”, ืฉื“ืจื›ื• ืืชื” ื™ื›ื•ืœ ืœื”ืชืงื™ืŸ ื—ื‘ื•ืจื” ืฉืœ ืžื•ื“ื•ืœื™ื ืฉื•ื ื™ื, ื‘ืคืจื˜, lua-resty-template. ื–ื”ื• ืžื ื•ืข ืชื‘ื ื™ื•ืช ืคืฉื•ื˜, ื‘ื“ื•ืžื” ืœืชื‘ื ื™ื•ืช ื’'ื ื’ื•. ืฉื ื ื™ืชืŸ ืœื›ืชื•ื‘ ืงื•ื“ ื•ืœื‘ืฆืข ื”ื—ืœืคืช ืžืฉืชื ื™ื.

ื›ืชื•ืฆืื” ืžื›ืš, ื”ื›ืœ ื™ื™ืจืื” ื‘ืขืจืš ื›ืš:

OpenResty: ื”ืคื™ื›ืช NGINX ืœืฉืจืช ื™ื™ืฉื•ืžื™ื ืžืœื

ืœืงื—ื ื• ืืช ื”ื ืชื•ื ื™ื ื•ืจื™ื ื“ืจื ื• ืืช ื”ืชื‘ื ื™ืช, ืฉื•ื‘ ื‘ืฉืชื™ ืฉื•ืจื•ืช. ื”ืžืฉืชืžืฉ ืžืจื•ืฆื”, ื”ื•ื ืงื™ื‘ืœ ื—ืชื•ืœื™ื. ืžื›ื™ื•ื•ืŸ ืฉื”ืจื—ื‘ื ื• ืืช ื”ื‘ืงืฉื”, ื”ื•ื ืงื™ื‘ืœ ื’ื ื—ื•ืชื ืคืจื•ื•ื” ืœื’ื•ืจื™ื. ืื™ ืืคืฉืจ ืœื“ืขืช, ืื•ืœื™ ื”ื•ื ื—ื™ืคืฉ ื‘ื“ื™ื•ืง ืืช ื–ื”, ืื‘ืœ ืœื ื”ืฆืœื™ื— ืœื ืกื— ืืช ื‘ืงืฉืชื• ื ื›ื•ืŸ.

ื”ื›ืœ ืžื’ื ื™ื‘, ืื‘ืœ ืื ื—ื ื• ื‘ืคื™ืชื•ื— ื•ืขื“ื™ื™ืŸ ืœื ืจื•ืฆื™ื ืœื”ืจืื•ืช ืืช ื–ื” ืœืžืฉืชืžืฉื™ื. ื‘ื•ื ื ืขืฉื” ืืช ื”ื”ืจืฉืื”. ืœืฉื ื›ืš, ื”ื‘ื” ื ื‘ื—ืŸ ื›ื™ืฆื“ NGINX ืžื˜ืคืœ ื‘ื‘ืงืฉื” ื‘ืžื•ื ื—ื™ OpenResty:

  • ืฉืœื‘ ืจืืฉื•ืŸ - ื’ื™ืฉื”, ื›ืฉื”ืžืฉืชืžืฉ ื‘ื“ื™ื•ืง ื”ื’ื™ืข, ื•ื”ืกืชื›ืœื ื• ืขืœื™ื• ืœืคื™ ื›ื•ืชืจื•ืช, ืœืคื™ ื›ืชื•ื‘ืช IP ื•ืœืคื™ ื ืชื•ื ื™ื ืื—ืจื™ื. ืื ื—ื ื• ื™ื›ื•ืœื™ื ืœื—ืชื•ืš ืืช ื–ื” ืžื™ื“ ืื ืื ื—ื ื• ืœื ืื•ื”ื‘ื™ื ืืช ื–ื”. ื–ื” ื™ื›ื•ืœ ืœืฉืžืฉ ืœื”ืจืฉืื”, ืื• ืื ื ืงื‘ืœ ื”ืจื‘ื” ื‘ืงืฉื•ืช, ื ื•ื›ืœ ืœื ืชืง ืื•ืชืŸ ื‘ืงืœื•ืช ื‘ืฉืœื‘ ื–ื”.
  • ืœึฐืฉึทืื›ึฐืชึตื‘. ืื ื• ืžืฉื›ืชื‘ื™ื ื›ืžื” ื ืชื•ื ื™ ื‘ืงืฉื”.
  • ืชื•ื›ืŸ. ืื ื• ืžืกืคืงื™ื ืืช ื”ืชื•ื›ืŸ ืœืžืฉืชืžืฉ.
  • ืžืกื ืŸ ื›ื•ืชืจื•ืช. ืื ื• ืžื—ืœื™ืคื™ื ืืช ื›ื•ืชืจื•ืช ื”ืชื’ื•ื‘ื”. ืื ื”ืฉืชืžืฉื ื• proxy_pass, ื ื•ื›ืœ ืœืฉื›ืชื‘ ื›ืžื” ื›ื•ืชืจื•ืช ืœืคื ื™ ืฉื ื™ืชืŸ ืืช ื–ื” ืœืžืฉืชืžืฉ.
  • ืžืกื ืŸ ื’ื•ืฃ. ืื ื—ื ื• ื™ื›ื•ืœื™ื ืœืฉื ื•ืช ืืช ื”ื’ื•ืฃ.
  • ื”ื™ื›ื ืก - ืจื™ืฉื•ื. ืืชื” ื™ื›ื•ืœ ืœื›ืชื•ื‘ ื™ื•ืžื ื™ื ื‘- elasticsearch ืœืœื ืฉื›ื‘ื” ื ื•ืกืคืช.

ื”ื”ืจืฉืื” ืฉืœื ื• ืชื™ืจืื” ื‘ืขืจืš ื›ืš:

OpenResty: ื”ืคื™ื›ืช NGINX ืœืฉืจืช ื™ื™ืฉื•ืžื™ื ืžืœื

ื ื•ืกื™ืฃ ืืช ื–ื” ืœื–ื” location, ืฉืชื™ืืจื ื• ืงื•ื“ื, ื•ืฉื ืฉื ืืช ื”ืงื•ื“ ื”ื‘ื:

OpenResty: ื”ืคื™ื›ืช NGINX ืœืฉืจืช ื™ื™ืฉื•ืžื™ื ืžืœื

ืื ื—ื ื• ืžืกืชื›ืœื™ื ืœืจืื•ืช ืื ื™ืฉ ืœื ื• ืืกื™ืžื•ืŸ ืขื•ื’ื™ื•ืช. ืื ืœื, ืื– ืื ื—ื ื• ืžื‘ืงืฉื™ื ืื™ืฉื•ืจ. ืžืฉืชืžืฉื™ื ืขืจืžื•ืžื™ื™ื ื•ื™ื›ื•ืœื™ื ืœื ื—ืฉ ืฉื”ื ืฆืจื™ื›ื™ื ืœื”ื’ื“ื™ืจ ืืกื™ืžื•ืŸ ืงื•ื‘ืฅ Cookie. ืœื›ืŸ, ื ืฉื™ื ืืช ื–ื” ื’ื ื‘ืจื“ื™ืก:

OpenResty: ื”ืคื™ื›ืช NGINX ืœืฉืจืช ื™ื™ืฉื•ืžื™ื ืžืœื

ื”ืงื•ื“ ืœืขื‘ื•ื“ื” ืขื Redis ื”ื•ื ืคืฉื•ื˜ ืžืื•ื“ ื•ืื™ื ื• ืฉื•ื ื” ืžืฉืคื•ืช ืื—ืจื•ืช. ื™ื—ื“ ืขื ื–ืืช, ื›ืœ ื”ืงืœื˜/ืคืœื˜, ืคื” ื•ืฉื, ืœื ื—ื•ืกื. ืื ืืชื” ื›ื•ืชื‘ ืงื•ื“ ืกื™ื ื›ืจื•ื ื™, ื–ื” ืขื•ื‘ื“ ื‘ืื•ืคืŸ ืืกื™ื ื›ืจื•ื ื™. ื›ืžืขื˜ ื›ืžื• ืœืชืช, ืื‘ืœ ืขืฉื” ื–ืืช ื”ื™ื˜ื‘.

OpenResty: ื”ืคื™ื›ืช NGINX ืœืฉืจืช ื™ื™ืฉื•ืžื™ื ืžืœื

ื‘ื•ื ื ืขืฉื” ืืช ื”ื”ืจืฉืื” ื‘ืขืฆืžื”:

OpenResty: ื”ืคื™ื›ืช NGINX ืœืฉืจืช ื™ื™ืฉื•ืžื™ื ืžืœื

ืื ื• ืื•ืžืจื™ื ืฉืขืœื™ื ื• ืœืงืจื•ื ืืช ื’ื•ืฃ ื”ื‘ืงืฉื”. ืื ื• ืžืงื‘ืœื™ื ืืจื’ื•ืžื ื˜ื™ื ืฉืœ POST ื•ื‘ื•ื“ืงื™ื ืฉื”ื›ื ื™ืกื” ื•ื”ืกื™ืกืžื” ื ื›ื•ื ื•ืช. ืื ื”ื ืฉื’ื•ื™ื™ื, ืื ื• ืงื•ืจืื™ื ืœืš ืื™ืฉื•ืจ. ื•ืื ื ื›ื•ืŸ, ืื– ื›ืชื•ื‘ ืืช ื”ืืกื™ืžื•ืŸ ื‘ืจื“ื™ืก:

OpenResty: ื”ืคื™ื›ืช NGINX ืœืฉืจืช ื™ื™ืฉื•ืžื™ื ืžืœื

ืืœ ืชืฉื›ื—ื• ืœื”ื’ื“ื™ืจ ืืช ื”ืขื•ื’ื™ื”, ื’ื ื–ื” ื ืขืฉื” ื‘ืฉืชื™ ืฉื•ืจื•ืช:

OpenResty: ื”ืคื™ื›ืช NGINX ืœืฉืจืช ื™ื™ืฉื•ืžื™ื ืžืœื

ื”ื“ื•ื’ืžื” ืคืฉื•ื˜ื” ื•ืกืคืงื•ืœื˜ื™ื‘ื™ืช. ื›ืžื•ื‘ืŸ, ืœื ื ืขืฉื” ืฉื™ืจื•ืช ืฉืžืจืื” ืœืื ืฉื™ื ื—ืชื•ืœื™ื. ืื‘ืœ ืžื™ ืžื›ื™ืจ ืื•ืชื ื•. ืื– ื‘ื•ืื• ื ืขื‘ื•ืจ ืขืœ ืžื” ื ื™ืชืŸ ืœืขืฉื•ืช ื‘ื™ื™ืฆื•ืจ.

  • ืื—ื•ืจื™ ืžื™ื ื™ืžืœื™ืกื˜ื™. ืœืคืขืžื™ื ืื ื—ื ื• ืฆืจื™ื›ื™ื ืœื”ื•ืฆื™ื ืจืง ืžืขื˜ ื ืชื•ื ื™ื ืœ-backend: ืื™ืคืฉื”ื• ืื ื—ื ื• ืฆืจื™ื›ื™ื ืœื”ื›ื ื™ืก ืชืืจื™ืš, ืื™ืคืฉื”ื• ืื ื—ื ื• ืฆืจื™ื›ื™ื ืœื”ืฆื™ื’ ืจืฉื™ืžื”, ืœื•ืžืจ ื›ืžื” ืžืฉืชืžืฉื™ื ื ืžืฆืื™ื ื‘ืืชืจ ื›ืขืช, ืœืฆืจืฃ ืžื•ื ื” ืื• ืกื˜ื˜ื™ืกื˜ื™ืงื”. ืžืฉื”ื• ื›ืœ ื›ืš ืงื˜ืŸ. ื›ืžื” ื—ืชื™ื›ื•ืช ืžื™ื ื™ืžืœื™ื•ืช ื ื™ืชืŸ ืœื”ื›ื™ืŸ ื‘ืงืœื•ืช ืจื‘ื”. ื–ื” ื™ืขืฉื” ืืช ื–ื” ืžื”ื™ืจ, ืงืœ ื•ื ื”ื“ืจ.
  • ืขื™ื‘ื•ื“ ืžืงื“ื™ื ืฉืœ ื ืชื•ื ื™ื. ืœืคืขืžื™ื ืื ื—ื ื• ืจื•ืฆื™ื ืœื”ื˜ืžื™ืข ืคืจืกื•ื ื‘ื“ืฃ ืฉืœื ื•, ื•ืื ื• ืžืงื‘ืœื™ื ืืช ื”ืคืจืกื•ื ื”ื–ื” ื‘ืืžืฆืขื•ืช ื‘ืงืฉื•ืช API. ื–ื” ืžืื•ื“ ืงืœ ืœืขืฉื•ืช ื›ืืŸ. ืื ื—ื ื• ืœื ืžืขืžื™ืกื™ื ืืช ื”-backend ืฉืœื ื•, ืฉื›ื‘ืจ ื™ื•ืฉื‘ ื•ืขื•ื‘ื“ ืงืฉื”. ืืชื” ื™ื›ื•ืœ ืœืืกื•ืฃ ืื•ืชื• ื•ืœืืกื•ืฃ ืื•ืชื• ื›ืืŸ. ืื ื—ื ื• ื™ื›ื•ืœื™ื ืœืจืงื•ื ืื™ื–ืฉื”ื• JS ืื• ืœื”ื™ืคืš, ืœื ืชืง ืื•ืชื• ื•ืœืขื‘ื“ ืžืฉื”ื• ืžืจืืฉ ืœืคื ื™ ืฉื ื•ืชื ื™ื ืื•ืชื• ืœืžืฉืชืžืฉ.
  • ื—ื–ื™ืช ืœืžื™ืงืจื•-ืฉื™ืจื•ืช. ื–ื” ื’ื ืžืงืจื” ื˜ื•ื‘ ืžืื•ื“, ื™ื™ืฉืžืชื™ ืื•ืชื•. ืœืคื ื™ ื›ืŸ ืขื‘ื“ืชื™ ื‘ื—ื‘ืจืช ื˜ื ืฆื•ืจ ื”ืขื•ืกืงืช ื‘ื“ื™ื•ื•ื— ืืœืงื˜ืจื•ื ื™ ื•ืžืกืคืงืช ื“ื™ื•ื•ื—ื™ื ืœื›ืžื—ืฆื™ืช ืžื”ื™ืฉื•ื™ื•ืช ื”ืžืฉืคื˜ื™ื•ืช ื‘ืืจืฅ. ื™ืฆืจื ื• ืฉื™ืจื•ืช, ื”ืจื‘ื” ื“ื‘ืจื™ื ื ืขืฉื• ืฉื ื‘ืื•ืชื• ืžื ื’ื ื•ืŸ: ื ื™ืชื•ื‘, ื”ืจืฉืื” ื•ืขื•ื“.
    OpenResty ื™ื›ื•ืœ ืœืฉืžืฉ ื›ื“ื‘ืง ืขื‘ื•ืจ ื”ืžื™ืงืจื•-ืฉื™ืจื•ืชื™ื ืฉืœืš, ื•ืžืกืคืง ื’ื™ืฉื” ืื—ืช ืœื›ืœ ื“ื‘ืจ ื•ืžืžืฉืง ื™ื—ื™ื“. ืžื›ื™ื•ื•ืŸ ืฉื ื™ืชืŸ ืœื›ืชื•ื‘ ืžื™ืงืจื•-ืฉื™ืจื•ืชื™ื ื‘ืฆื•ืจื” ื›ื–ื• ืฉื™ืฉ ืœืš ื›ืืŸ Node.js, PHP ื›ืืŸ, Python ื›ืืŸ, ืžืฉื”ื• ืฉืœ Erlang ื›ืืŸ, ืื ื—ื ื• ืžื‘ื™ื ื™ื ืฉืื ื—ื ื• ืœื ืจื•ืฆื™ื ืœืฉื›ืชื‘ ืืช ืื•ืชื• ื”ืงื•ื“ ื‘ื›ืœ ืžืงื•ื. ืœื›ืŸ, ื ื™ืชืŸ ืœื—ื‘ืจ ืืช OpenResty ืœื—ื–ื™ืช.

  • ืกื˜ื˜ื™ืกื˜ื™ืงื” ื•ื ื™ืชื•ื—. ื‘ื“ืจืš ื›ืœืœ NGINX ื ืžืฆื ื‘ื›ื ื™ืกื”, ื•ื›ืœ ื”ื‘ืงืฉื•ืช ืขื•ื‘ืจื•ืช ื“ืจื›ื”. ื–ื” ื‘ืžืงื•ื ื”ื–ื” ื–ื” ืžืื•ื“ ื ื•ื— ืœืืกื•ืฃ. ืืชื” ื™ื›ื•ืœ ืžื™ื“ ืœื—ืฉื‘ ืžืฉื”ื• ื•ืœื”ืขืœื•ืช ืื•ืชื• ืœืื ืฉื”ื•, ืœืžืฉืœ, Elasticsearch, Logstash, ืื• ืคืฉื•ื˜ ืœื›ืชื•ื‘ ืื•ืชื• ืœื™ื•ืžืŸ ื•ืื– ืœืฉืœื•ื— ืื•ืชื• ืœืื ืฉื”ื•.
  • ืžืขืจื›ื•ืช ืžืจื•ื‘ื•ืช ืžืฉืชืžืฉื™ื. ืœื“ื•ื’ืžื, ืžืฉื—ืงื™ื ืžืงื•ื•ื ื™ื ื˜ื•ื‘ื™ื ืžืื•ื“ ืœื”ื›ื ื”. ื”ื™ื•ื ื‘ืงื™ื™ืคื˜ืื•ืŸ, ืืœื›ืกื ื“ืจ ื’ืœื“ื™ืฉ ื™ื“ื‘ืจ ืขืœ ืื™ืš ืœื™ืฆื•ืจ ืื‘ื˜ื™ืคื•ืก ืžื”ื™ืจ ืœืžืฉื—ืง ืžืจื•ื‘ื” ืžืฉืชืชืคื™ื ื‘ืืžืฆืขื•ืช OpenResty.
  • ืกื™ื ื•ืŸ ื‘ืงืฉื•ืช (WAF). ื›ื™ื•ื ื–ื” ืื•ืคื ืชื™ ืœื™ืฆื•ืจ ื›ืœ ืžื™ื ื™ ื—ื•ืžื•ืช ืืฉ ืฉืœ ื™ื™ืฉื•ืžื™ ืื™ื ื˜ืจื ื˜; ื™ืฉื ื ืฉื™ืจื•ืชื™ื ืจื‘ื™ื ื”ืžืกืคืงื™ื ืื•ืชื. ื‘ืืžืฆืขื•ืช OpenResty, ืืชื” ื™ื›ื•ืœ ืœื™ืฆื•ืจ ืœืขืฆืžืš ื—ื•ืžืช ืืฉ ืฉืœ ืืคืœื™ืงืฆื™ื•ืช ืื™ื ื˜ืจื ื˜ ืฉืชืกื ืŸ ื‘ืคืฉื˜ื•ืช ื•ื‘ืงืœื•ืช ื‘ืงืฉื•ืช ื‘ื”ืชืื ืœื“ืจื™ืฉื•ืช ืฉืœืš. ืื ื™ืฉ ืœื›ื Python, ืื– ืืชื ืžื‘ื™ื ื™ื ืฉ-PHP ื‘ื”ื—ืœื˜ ืœื ื™ื•ื–ืจืง ืœืชื•ื›ื, ืืœื ืื ื›ืŸ, ื›ืžื•ื‘ืŸ, ืชื•ืฆื™ืื• ืื•ืชื• ื‘ื›ืœ ืžืงื•ื ืžื”ืงื•ื ืกื•ืœื”. ืืชื” ื™ื•ื“ืข ืฉื™ืฉ ืœืš MySQL ื•-Python. ื›ื ืจืื” ืฉื”ื ื™ื ืกื• ืœืขืฉื•ืช ืื™ื–ืฉื”ื• ืžืขื‘ืจ ืกืคืจื™ื•ืช ื•ืœื”ื—ื“ื™ืจ ืžืฉื”ื• ืœืžืกื“ ื”ื ืชื•ื ื™ื. ืœื›ืŸ, ืืชื” ื™ื›ื•ืœ ืœืกื ืŸ ืฉืื™ืœืชื•ืช ืžื•ื–ืจื•ืช ื‘ืžื”ื™ืจื•ืช ื•ื‘ื–ื•ืœ ืžืžืฉ ื‘ื—ื–ื™ืช.
  • ืงื”ื™ืœื”. ืžื›ื™ื•ื•ืŸ ืฉ-OpenResty ื‘ื ื•ื™ื” ืขืœ NGINX, ื™ืฉ ืœื” ื‘ื•ื ื•ืก - ื–ื” ืงื”ื™ืœืช NGINX. ื”ื•ื ื’ื“ื•ืœ ืžืื•ื“, ื•ื—ืœืง ื”ื’ื•ืŸ ืžื”ืฉืืœื•ืช ืฉื™ื”ื™ื• ืœืš ื‘ื”ืชื—ืœื” ื›ื‘ืจ ื ืคืชืจื• ืขืœ ื™ื“ื™ ืงื”ื™ืœืช NGINX.

    ืžืคืชื—ื™ Lua. ืืชืžื•ืœ ื“ื™ื‘ืจืชื™ ืขื ื”ื—ื‘ืจ'ื” ืฉื”ื’ื™ืขื• ืœื™ื•ื ื”ื”ื“ืจื›ื” ืฉืœ HighLoad++ ื•ืฉืžืขืชื™ ืฉืจืง Tarantool ื ื›ืชื‘ ื‘ืœื•ืื”. ื–ื” ืœื ื ื›ื•ืŸ, ื”ืจื‘ื” ื“ื‘ืจื™ื ื›ืชื•ื‘ื™ื ื‘ืœื•ืื”. ื“ื•ื’ืžืื•ืช: OpenResty, ืฉืจืช Prosody XMPP, ืžื ื•ืข ืžืฉื—ืง Love2D, Lua ืฉื ื›ืชื‘ ื‘-Warcraft ื•ื‘ืžืงื•ืžื•ืช ืื—ืจื™ื. ื™ืฉ ื”ืจื‘ื” ืžืคืชื—ื™ Lua, ื™ืฉ ืœื”ื ืงื”ื™ืœื” ื’ื“ื•ืœื” ื•ืžื’ื™ื‘ื”. ื›ืœ ื”ืฉืืœื•ืช ืฉืœื™ ืœื•ืื” ื ืคืชืจื• ืชื•ืš ื›ืžื” ืฉืขื•ืช. ื›ืฉืืชื” ื›ื•ืชื‘ ืœืจืฉื™ืžืช ื”ืชืคื•ืฆื”, ืžืžืฉ ืชื•ืš ื›ืžื” ื“ืงื•ืช ื™ืฉ ื›ื‘ืจ ืฉืœืœ ืชื’ื•ื‘ื•ืช, ืฉืžืชืืจื•ืช ืžื” ื•ืื™ืš, ืžื” ืžื”. ื–ื” ืžืขื•ืœื”. ืœืžืจื‘ื” ื”ืฆืขืจ, ืงื”ื™ืœื” ืจื•ื—ื ื™ืช ื—ื‘ื™ื‘ื” ื›ื–ื• ืœื ื ืžืฆืืช ื‘ื›ืœ ืžืงื•ื.
    ื™ืฉ GitHub ืขื‘ื•ืจ OpenResty, ืฉื‘ื• ืืชื” ื™ื›ื•ืœ ืœืคืชื•ื— ื‘ืขื™ื” ืื ืžืฉื”ื• ื ืฉื‘ืจ. ื™ืฉ ืจืฉื™ืžืช ืชืคื•ืฆื” ื‘-Google Groups, ืฉื‘ื” ืืชื” ื™ื›ื•ืœ ืœื“ื•ืŸ ื‘ื ื•ืฉืื™ื ื›ืœืœื™ื™ื, ื™ืฉ ืจืฉื™ืžืช ืชืคื•ืฆื” ื‘ืกื™ื ื™ืช - ืื™ ืืคืฉืจ ืœื“ืขืช, ืื•ืœื™ ืืชื” ืœื ื“ื•ื‘ืจ ืื ื’ืœื™ืช, ืื‘ืœ ืืชื” ื™ื•ื“ืข ืกื™ื ื™ืช.

ืชื•ืฆืื•ืช ืฉืœ

  • ืื ื™ ืžืงื•ื•ื” ืฉื”ืฆืœื—ืชื™ ืœื”ืขื‘ื™ืจ ืฉ-OpenResty ื”ื™ื ืžืกื’ืจืช ื ื•ื—ื” ืžืื•ื“ ื”ืžื•ืชืืžืช ืœืื™ื ื˜ืจื ื˜.
  • ื™ืฉ ืœื• ืžื—ืกื•ื ื›ื ื™ืกื” ื ืžื•ืš, ืžื›ื™ื•ื•ืŸ ืฉื”ืงื•ื“ ื“ื•ืžื” ืœืžื” ืฉืื ื—ื ื• ื›ื•ืชื‘ื™ื ื‘ื•, ื”ืฉืคื” ื“ื™ ืคืฉื•ื˜ื” ื•ืžื™ื ื™ืžืœื™ืกื˜ื™ืช.
  • ื–ื” ืžืกืคืง ืงืœื˜/ืคืœื˜ ืืกื™ื ื›ืจื•ื ื™ ืœืœื ื”ืชืงืฉืจื•ื™ื•ืช ื—ื•ื–ืจื•ืช, ืœื ื™ื”ื™ื• ืœื ื• ืื˜ืจื™ื•ืช ื›ืžื• ืฉืœืคืขืžื™ื ืื ื—ื ื• ื™ื›ื•ืœื™ื ืœื›ืชื•ื‘ ื‘-NodeJS.
  • ื™ืฉ ืœื• ืคืจื™ืกื” ืงืœื”, ืžื›ื™ื•ื•ืŸ ืฉืื ื—ื ื• ืฆืจื™ื›ื™ื ืจืง NGINX ืขื ื”ืžื•ื“ื•ืœ ื”ื“ืจื•ืฉ ื•ื”ืงื•ื“ ืฉืœื ื•, ื•ื”ื›ืœ ืขื•ื‘ื“ ืžื™ื“.
  • ืงื”ื™ืœื” ื’ื“ื•ืœื” ื•ืžื’ื™ื‘ื”.

ืœื ืกื™ืคืจืชื™ ื‘ืคื™ืจื•ื˜ ืื™ืš ืขื•ืฉื™ื ื ื™ืชื•ื‘, ื”ืชื‘ืจืจ ืฉื–ื” ืกื™ืคื•ืจ ืืจื•ืš ืžืื•ื“.

ืชื•ื“ื” ืœืš!


Vladimir Protasov - OpenResty: ื”ืคื™ื›ืช NGINX ืœืฉืจืช ื™ื™ืฉื•ืžื™ื ืžืŸ ื”ืžื ื™ื™ืŸ

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

ื”ื•ืกืคืช ืชื’ื•ื‘ื”