OpenRestyแก NGINXแŠ• แ‹ˆแ‹ฐ แˆ™แˆ‰ แ‹จแˆ˜แ‰ฐแŒแ‰ แˆชแ‹ซ แŠ แŒˆแˆแŒ‹แ‹ญ แˆ˜แ‰€แ‹จแˆญ

OpenRestyแก NGINXแŠ• แ‹ˆแ‹ฐ แˆ™แˆ‰ แ‹จแˆ˜แ‰ฐแŒแ‰ แˆชแ‹ซ แŠ แŒˆแˆแŒ‹แ‹ญ แˆ˜แ‰€แ‹จแˆญแ‹จแŒ‰แ‰ฃแ‹”แ‹แŠ• แ‹˜แŒˆแ‰ฃ แŒแˆแ‰ฃแŒญ แ‰ แ‹ตแŒ‹แˆš แŠฅแ‹ซแ‰ฐแˆแŠ• แАแ‹แข HighLoad ++ 2016, แ‹ญแˆ…แˆ แ‰ฃแˆˆแˆแ‹ แ‹“แˆ˜แ‰ต แˆ…แ‹ณแˆญ 7-8 แˆ‹แ‹ญ แˆžแˆตแŠฎ แŠ แ‰…แˆซแ‰ขแ‹ซ Skolkovo แ‹แˆตแŒฅ แ‰ฐแŠซแˆ„แ‹ฐ. แ‰ญแˆ‹แ‹ตแˆšแˆญ แ•แˆฎแ‰ณแˆถแ‰ญ แ‹จNGINX แ‰ฐแŒแ‰ฃแˆญแŠ• แ‰ OpenResty แŠฅแŠ“ Lua แŠฅแŠ•แ‹ดแ‰ต แˆ›แˆซแ‹˜แˆ แŠฅแŠ•แ‹ฐแˆšแ‰ปแˆ แ‹ซแ‰ฅแˆซแˆซแˆแข

แŒคแŠ“ แ‹ญแˆตแŒฅแˆแŠ แˆแˆ‰แˆ แˆฐแ‹, แˆตแˆœ แ‰ญแˆ‹แ‹ตแˆšแˆญ แ•แˆฎแ‰ณแˆถแ‰ญ แŠฅแ‰ฃแˆ‹แˆˆแˆ, แ‰  Parallels แˆ‹แ‹ญ แŠฅแˆฐแˆซแˆˆแˆ. แˆตแˆˆแˆซแˆด แ‰ตแŠ•แˆฝ แŠฅแАแŒแˆญแ‹Žแ‰ณแˆˆแˆแข แ‰ แˆ•แ‹ญแ‹ˆแ‰ด แˆฆแˆตแ‰ต แŠ แˆซแ‰ฐแŠ›แ‹แŠ• แŠฎแ‹ต แ‰ แˆ˜แŒปแ แŠ แˆณแˆแ‹แˆˆแˆแข แ‰ แŒฅแˆฌแ‹ แ•แˆฎแŒแˆซแˆ˜แˆญ แˆ†แŠ•แŠฉแŠแก แŠ แŠ•แ‹ณแŠ•แ‹ต แŒŠแ‹œ แ‰ แˆ…แˆแˆœ แŠฎแ‹ต แŠ แ‹ญแ‰ปแˆˆแˆแข แˆฉแ‰ฅ แˆ…แ‹ญแ‹ˆแ‰ต แ‹จแŠขแŠ•แ‹ฑแˆตแ‰ตแˆช แˆแˆ›แ‰ต แАแ‹, แ‰ แ‰€แŒฅแ‰ณ แ‹ˆแ‹ฐ แˆแˆญแ‰ต แ‹จแˆšแŒˆแ‰ฃแ‹แŠ• แŠฎแ‹ต แˆ˜แŒปแ. แŠ แŠ•แ‹ณแŠ•แ‹ถแ‰ปแ‰ฝแˆ แ‹จแˆแ‰ตแŒ แ‰€แˆ™แ‰ต แŒแŠ• แ‹จแˆ›แ‰ณแ‹แ‰แ‰ต แŠฎแ‹ตแข

แˆตแˆˆแ‹šแˆ… แˆแŠ• แ‹ซแˆ…แˆ แˆ˜แŒฅแŽ แŠฅแŠ•แ‹ฐแАแ‰ แˆจ แ‹ญแŒˆแ‰ฃแ‹Žแ‰ณแˆ. แ‰ตแŠ•แˆฝ แˆแŒ… แˆณแˆˆแˆแฃ แˆ˜แŒฅแ‰ผ แŠฅแАแ‹šแˆ… แ‰ฃแˆˆ แˆแˆˆแ‰ต แ‰ดแˆซแ‰ฃแ‹ญแ‰ต แ‹ณแ‰ณแ‰คแ‹ แ‰ฐแˆฐแŒ แŠแข แŠ แˆแŠ• แŠฅแ‹šแˆ… แˆ‹แˆˆ แˆแˆ‰แˆ แˆฐแ‹ แŠจแแ‰ฐแŠ› แŒญแАแ‰ต แАแ‹แข แ‹ˆแ‹ฐ แŠฎแŠ•แˆแˆจแŠ•แˆถแ‰ฝ แˆ„แŒ„ แŒ แ‹จแ‰…แˆแก- โ€œแ‹ˆแŠ•แ‹ถแ‰ฝแฃ แŠ•แŒˆแˆฉแŠแฃ แ‰ตแˆแ‰… แˆ˜แˆจแŒƒ แŠ แˆ‹แ‰ฝแˆแฃ แˆแˆ‰แˆ แАแŒˆแˆญ แŒฅแˆฉ แАแ‹? แŠฅแ‹šแ‹ซ แˆตแŠ•แ‰ต แˆ˜แˆฐแˆจแ‰ต แŠ แˆˆแˆ…? โ€œ100 แŒŠแŒ‹แ‰ฃแ‹ญแ‰ต แŠ แˆˆแŠ•!โ€ แ‰ฅแˆˆแ‹ แˆ˜แˆˆแˆฑแˆแŠแข โ€œแŠ แˆชแแฃ 100 แŒŠแŒ‹แ‰ฃแ‹ญแ‰ต!โ€ แŠ แˆแŠฉแ‰ตแข แŠฅแŠ“ แ‹จแ’แŠจแˆญ แŠแ‰ดแŠ• แŠฅแŠ•แ‹ดแ‰ต แ‰ แŒฅแŠ•แ‰ƒแ‰„ แˆ˜แŒ แ‰ แ‰… แŠฅแŠ•แ‹ณแˆˆแ‰ฅแŠ แˆˆแˆซแˆด แŠฅแ‹ซแˆฐแ‰ฅแŠฉ แАแ‰ แˆญแข แ‹ญแˆ˜แˆตแˆ‹แ‰ฝแŠ‹แˆแฃ แŠ แ‹Žแฃ แˆฐแ‹Žแ‰น แŒฅแˆฉ แŠ“แ‰ธแ‹แฃ แŠฅแŠ“ แŠจแ‹šแ‹ซ แ‰ฐแˆ˜แˆแˆฐแˆ… แ‰ แŠฅแАแ‹šแˆ… แ‰ฃแˆˆแ‰ฅแ‹™ แ‰ดแˆซแ‰ฃแ‹ญแ‰ต แ‹จแ‹แˆ‚แ‰ฅ แŒŽแ‰ณแ‹Žแ‰ฝ แ‰ตแˆ˜แˆญแŒฃแˆˆแˆ…แข แŠฅแŠ“ แ‹ญแˆ„ - แŒแŠ’แ‹จแˆญ แˆ˜แˆ†แŠ•. แ‹ญแˆ… แˆแŠ• แ‹“แ‹ญแАแ‰ต แ‹ตแ‰ฅแ‹ฐแ‰ฃ แŠฅแŠ•แ‹ฐแˆ†แА แˆ˜แŒˆแˆ˜แ‰ต แ‰ตแ‰ฝแˆ‹แˆˆแˆ…?

แŠจ20 แ‰ แˆ‹แ‹ญ แ‹จแ•แˆฎแŒแˆซแˆšแŠ•แŒ แ‰‹แŠ•แ‰‹แ‹Žแ‰ฝแŠ• แŠ แ‹แ‰ƒแˆˆแˆแข แ‹ญแˆ… แˆตแˆฐแˆซ แˆ›แ‹ˆแ‰… แ‹จแАแ‰ แˆจแ‰ฅแŠ แАแŒˆแˆญ แАแ‹แข แ‰  Erlangแฃ Cแฃ C++แฃ Luaแฃ Pythonแฃ Rubyแฃ แˆŒแˆ‹ แАแŒˆแˆญ แŠฎแ‹ต แ‹ญแˆฐแŒกแ‹Žแ‰ณแˆ แŠฅแŠ“ แˆแˆ‰แŠ•แˆ แˆ˜แ‰แˆจแŒฅ แŠ แˆˆแ‰ฅแ‹Žแ‰ตแข แ‰ แŠ แŒ แ‰ƒแˆ‹แ‹ญ, แˆ›แ‹ตแˆจแŒ แАแ‰ แˆจแ‰ฅแŠ. แ‰ตแŠญแŠญแˆˆแŠ›แ‹แŠ• แ‰แŒฅแˆญ แˆˆแˆ›แˆตแˆ‹แ‰ต แŠ แˆแ‰ฐแ‰ปแˆˆแˆ, แАแŒˆแˆญ แŒแŠ• แ‰  20 แŠ›แ‹ แŠ แŠซแ‰ฃแ‰ข แ‹จแˆ†แА แ‰ฆแ‰ณ แ‰แŒฅแˆฉ แŒ แแ‰ทแˆ.

แˆแˆ‰แˆ แ‹จแ‰€แˆจแ‰กแ‰ต แ‰ตแ‹ญแ‹ฉแ‹Žแ‰ฝ แˆแŠ• แŠฅแŠ•แ‹ฐแˆ†แŠ‘ แŠฅแŠ“ แˆแŠ• แŠฅแŠ•แ‹ฐแˆแŠ“แ‹ฐแˆญแŒ แˆตแˆˆแˆšแ‹ซแ‹แ‰…แฃ แˆแŠ• แ‹ซแˆ…แˆ แŠ แˆชแ แŠฅแŠ•แ‹ฐแˆ†แŠ•แŠ• แŠฅแŠ“ แˆแŠ• แŠฅแŠ•แ‹ฐแˆแŠ“แ‹ฐแˆญแŒ แŠ แˆแŠ“แŒˆแˆญแˆแข แ‰ แŠ แˆˆแˆ แ‹™แˆชแ‹ซ 13 แ‰ขแˆฎแ‹Žแ‰ฝ, แŠจ 300 แ‰ แˆ‹แ‹ญ แˆฐแˆซแ‰ฐแŠžแ‰ฝ, แ‰ แˆžแˆตแŠฎ, แ‰ณแˆŠแŠ• แŠฅแŠ“ แˆ›แˆแ‰ณ แ‹แˆตแŒฅ แˆแˆ›แ‰ต แŠฅแŠ•แ‹ณแˆˆแŠ• แŠฅแАแŒแˆญแ‹Žแ‰ณแˆˆแˆ. แŠจแˆแˆˆแŒ‰, แˆ˜แ‹แˆฐแ‹ต แŠฅแŠ“ แ‰ แŠญแˆจแˆแ‰ต แ‰€แ‹แ‰ƒแ‹› แŠจแˆ†แА แŠฅแŠ“ แŒ€แˆญแ‰ฃแ‹ŽแŠ• แˆ›แˆžแ‰… แŠจแˆแˆˆแŒ‰ แ‹ˆแ‹ฐ แˆ›แˆแ‰ณ แˆ˜แˆ„แ‹ต แ‹ญแ‰ฝแˆ‹แˆ‰.

แ‰ แ‰ฐแˆˆแ‹ญแˆ แ‹จแŠฅแŠ› แ‹ฒแ“แˆญแ‰ตแˆ˜แŠ•แ‰ต แ‰  Python 2 แ‹แˆตแŒฅ แ‹ญแŒฝแ‹แˆ. แŠฅแŠ› แ‰ แŠ•แŒแ‹ต แˆตแˆซ แˆ‹แ‹ญ แАแŠ• แŠฅแŠ“ แ‹แˆฝแŠ• แ‰ดแŠญแŠ–แˆŽแŒ‚แ‹Žแ‰ฝแŠ• แˆˆแˆ˜แ‰ฐแŒแ‰ แˆญ แŒŠแ‹œ แ‹จแˆˆแŠ•แˆ, แˆตแˆˆแ‹šแˆ… แŠฅแŠ•แˆฐแ‰ƒแ‹ซแˆˆแŠ•. แ‹ฒแŒƒแŠ•แŒŽแŠ• แ‹จแˆแŠ•แŒ แ‰€แˆ˜แ‹ แˆแˆ‰แˆ แАแŒˆแˆญ แˆตแˆ‹แˆˆแ‹ แАแ‹แฃ แŠฅแŠ“ แŠ แˆ‹แˆตแˆแˆ‹แŒŠ แ‹จแˆ†แАแ‹แŠ• แ‹ˆแˆตแ‹ฐแŠ• แ‹ˆแˆจแ‹ˆแˆญแАแ‹แข แŠฅแŠ•แ‹ฒแˆแˆ MySQLแฃ Redis แŠฅแŠ“ NGINXแข แˆŒแˆŽแ‰ฝ แ‰ฅแ‹™ แŒฅแˆฉ แАแŒˆแˆฎแ‰ฝแˆ แŠ แˆ‰แŠ•แข MongoDB แŠ แˆˆแŠ• แฃ แ‹™แˆชแ‹ซแ‹แŠ• แ‹จแˆšแˆฎแŒก แŒฅแŠ•แ‰ธแˆŽแ‰ฝ แŠ แˆ‰แŠ• แฃ แˆแˆ‰แˆ แАแŒˆแˆญ แŠ แˆˆแŠ• - แŒแŠ• แ‹จแŠฅแŠ” แŠ แ‹ญแ‹ฐแˆˆแˆ แฃ แŠฅแŠ“ แŠฅแŠ” แŠ แˆ‹แ‹ฐแˆญแŒˆแ‹แˆแข

แŠญแแ‰ต แˆฌแˆตแ‰ฒ

แˆตแˆˆแˆซแˆด แАแŒˆแˆญแŠฉแ‰ตแข แŠฅแˆตแ‰ฒ แ‹›แˆฌ แˆตแˆˆแˆแŠ“แŒˆแˆจแ‹ แАแŒˆแˆญ แŠฅแŠ•แ‹ˆแ‰…แก-

  • OpenResty แˆแŠ•แ‹ตแŠ• แАแ‹ แŠฅแŠ“ แŠจแˆแŠ• แŒ‹แˆญ แАแ‹ แ‹จแˆšแ‰ แˆ‹แ‹?
  • แ“แ‹ญแ‹˜แŠ•แฃ แŠ–แ‹ตแŒ„แŠคแˆตแฃ แ’แŠคแ‰ฝแ’แฃ แˆ‚แ‹ต แŠฅแŠ“ แˆแˆ‰แˆ แˆฐแ‹ แ‹จแˆšแ‹ฐแˆฐแ‰ตแ‰ฃแ‰ธแ‹ แˆŒแˆŽแ‰ฝ แŒฅแˆฉ แАแŒˆแˆฎแ‰ฝ แŠฅแ‹ซแˆˆแŠ• แˆˆแˆแŠ• แˆŒแˆ‹ แŒŽแˆ› แŠฅแŠ•แ‹ฐแŒˆแŠ“ แŠฅแŠ•แˆฐแˆซแˆˆแŠ•แข
  • แŠฅแŠ“ แŠจแˆ…แ‹ญแ‹ˆแ‰ต แŒฅแ‰‚แ‰ต แˆแˆณแˆŒแ‹Žแ‰ฝแข 3,5 แˆฐแŠ แ‰ณแ‰ต แˆตแˆˆแˆแŒ€แ‰ฅแŠ แˆชแ–แˆญแ‰ฑแŠ• แ‰ฅแ‹™ แˆ˜แ‰แˆจแŒฅ แАแ‰ แˆจแ‰ฅแŠ, แˆตแˆˆแ‹šแˆ… แŒฅแ‰‚แ‰ต แˆแˆณแˆŒแ‹Žแ‰ฝ แ‹ญแŠ–แˆซแˆ‰.

OpenResty NGINX แАแ‹แข แˆˆแŠฅแˆฑ แˆแˆตแŒ‹แŠ“ แ‹ญแŒแ‰ฃแ‹แŠ“ แ‰ แ‹ฐแŠ•แ‰ฅ แ‹จแ‰ฐแƒแˆ แŠฅแŠ“ แ‰ แแŒฅแАแ‰ต แ‹จแˆšแˆฐแˆซ แˆ™แˆ‰ แŠ แŒˆแˆแŒแˆŽแ‰ต แ‹ซแˆˆแ‹ แ‹จแ‹ตแˆญ แŠ แŒˆแˆแŒ‹แ‹ญ แŠ แˆˆแŠ•. แŠ แ‰ฅแ‹›แŠžแ‰ปแ‰ฝแŠ• NGINXแŠ• แ‰ แˆแˆญแ‰ต แ‹แˆตแŒฅ แŠฅแŠ•แŒ แ‰€แˆ›แˆˆแŠ• แ‰ฅแ‹ฌ แŠ แˆตแ‰ฃแˆˆแˆแข แŠฅแˆฑ แˆแŒฃแŠ• แŠฅแŠ“ แŠ แˆชแ แŠฅแŠ•แ‹ฐแˆ†แА แˆแˆ‹แ‰ฝแˆแˆ แ‰ณแ‹แ‰ƒแˆ‹แ‰ฝแˆแข แ‰ แ‹แˆตแŒก แŠ แˆชแ แ‹จแ‰ฐแˆ˜แˆณแˆฐแˆˆ I/O แˆ แˆฉแฃ แˆตแˆˆแ‹šแˆ… แˆแŠ•แˆ แАแŒˆแˆญ แˆ›แˆฝแŠจแˆญแŠจแˆญ แŠ แ‹ซแˆตแˆแˆแŒˆแŠ•แˆแฃ แˆแŠญ แ‰ แ“แ‹ญแ‹˜แŠ• แ‹แˆตแŒฅ แŠฅแŠ•แ‹ณแ‹ฐแˆจแŒ‰แ‰ตแข Gevent แŠ แˆชแ แАแ‹ แŠ แˆชแ แАแ‹ แАแŒˆแˆญ แŒแŠ• แˆฒ แŠฎแ‹ต แŠจแƒแ‰ แŠฅแŠ“ แ‹จแˆ†แА แ‰ฝแŒแˆญ แŠจแ‰ฐแˆแŒ แˆจ แ‰ แŒŒแ‰ฌแŠ•แ‰ต แŠ แˆ›แŠซแŠแАแ‰ต แˆ›แˆจแˆ แ‹ซแ‰ฅแ‹ณแˆ‰แข แˆแˆแ‹ฑ แАแ‰ แˆจแŠแก แŠฅแ‹šแ‹ซ แˆแŠ• แŠฅแŠ•แ‹ฐแ‰ฐแˆแŒ แˆจ แˆˆแˆ›แ‹ˆแ‰… แˆแˆˆแ‰ต แˆ™แˆ‰ แ‰€แŠ“แ‰ต แˆแŒ…แ‰ทแˆแข แŠ แŠ•แ‹ต แˆฐแ‹ แˆˆแ‰ฅแ‹™ แˆณแˆแŠ•แ‰ณแ‰ต แŠซแˆแ‰†แˆแˆจ แฃ แ‰ฝแŒแˆฉแŠ• แŠซแˆ‹แŒˆแŠ˜ แฃ แ‰ แ‹ญแАแˆ˜แˆจแ‰ฅ แˆ‹แ‹ญ แ‰ขแŒฝแ แŠฅแŠ“ แŒŽแŒแˆ แ‰ฃแ‹ซแŒˆแŠ˜แ‹ แŠ–แˆฎ แˆ™แˆ‰ แ‰ แˆ™แˆ‰ แŠฅแ‰ฅแ‹ต แŠฅแŠ•แˆ†แŠ• แАแ‰ แˆญแข

NGINX แŠ แˆตแ‰€แ‹ตแˆž แˆ˜แˆธแŒŽแŒซ แŠฅแŠ“ แ‹จแˆ›แ‹ญแŠ•แ‰€แˆณแ‰€แˆต แ‹ญแ‹˜แ‰ต แ‰ฐแŠจแŠ“แ‹แŠ—แˆแข แ‰ แˆ†แА แ‰ฆแ‰ณ แˆ‹แ‹ญ แŒˆแˆ‹แŒญแ‹Žแ‰ฝแŠ• แŠฅแŠ•แ‹ณแ‹ซแŒก, แ‹จแˆ†แА แ‰ฆแ‰ณ แŠฅแŠ•แ‹ณแ‹ญแ‹˜แŒˆแ‹ฉ, แ‹ญแˆ…แŠ•แŠ• แ‰ แˆฐแ‰ฅแŠ แ‹ŠแАแ‰ต แŠฅแŠ•แ‹ดแ‰ต แŠฅแŠ•แ‹ฐแˆšแ‹ซแ‹ฐแˆญแŒ‰แ‰ต แˆ˜แŒจแАแ‰… แŠ แ‹ซแˆตแˆแˆแŒแ‹Žแ‰ตแˆ. Nginx แˆˆแˆ›แˆฐแˆ›แˆซแ‰ต แ‰ แŒฃแˆ แˆแ‰น แАแ‹, แˆแŠ• แˆ˜แ‹แˆฐแ‹ต แŠฅแŠ•แ‹ณแˆˆแ‰ฆแ‰ต แˆ›แˆฐแ‰ฅ แŠ แ‹ซแˆตแˆแˆแŒแ‹Žแ‰ตแˆ - WSGI, PHP-FPM, Gunicorn, Unicorn. Nginx แ‰ฐแŒญแŠ—แˆ, แˆˆแŠ แˆตแ‰ฐแ‹ณแ‹ณแˆชแ‹Žแ‰ฝ แ‰ฐแˆฐแŒฅแ‰ทแˆ, แŠจแŠฅแˆฑ แŒ‹แˆญ แŠฅแŠ•แ‹ดแ‰ต แŠฅแŠ•แ‹ฐแˆšแˆฐแˆฉ แ‹ซแ‹แ‰ƒแˆ‰. Nginx แŒฅแ‹ซแ‰„แ‹Žแ‰ฝแŠ• แ‰ แ‰ฐแ‰€แŠ“แŒ€ แˆ˜แˆแŠฉ แ‹ซแˆตแŠฌแ‹ณแˆแข แˆตแˆˆแ‹šแˆ… แŒ‰แ‹ณแ‹ญ แ‰ตแŠ•แˆฝ แ‰†แ‹ญแ‰ผ แŠ แ‹ˆแˆซแˆˆแˆแข แ‰ฃแŒญแˆฉ แŒฅแ‹ซแ‰„แ‹แŠ• แˆฒแ‰€แ‰ แˆแฃ แˆฒแ‹ซแˆตแ‰ฐแŠ“แŒแ‹ต แŠฅแŠ“ แ‹ญแ‹˜แ‰ฑแŠ• แˆˆแ‰ฐแŒ แ‰ƒแˆšแ‹ แˆฒแ‹ซแ‰€แˆญแ‰ฅ แ‹ฐแˆจแŒƒ แŠ แˆˆแ‹แข

Nginx แŠ แˆชแ แАแ‹แฃ แАแŒˆแˆญ แŒแŠ• แŠ แŠ•แ‹ต แ‰ฝแŒแˆญ แŠ แˆˆแก แˆแŠ•แˆ แŠฅแŠ•แŠณแŠ• แˆŠแ‹‹แ‰€แˆญ แ‰ขแ‰ฝแˆแˆ แ‹ˆแŠ•แ‹ถแ‰น แ‹ˆแ‹ฐ แ‹แ‰…แˆฉ แ‰ฃแŒจแŠ“แАแ‰แ‰ต แŒฅแˆฉ แ‰ฃแˆ…แˆชแ‹ซแ‰ต แŠฅแŠ•แŠณแŠ• แ‰ แ‰ แ‰‚ แˆแŠ”แ‰ณ แ‰ฐแˆˆแ‹‹แ‹‹แŒญ แŠ แ‹ญแ‹ฐแˆˆแˆแข แ‹ญแˆ… แŠƒแ‹ญแˆ แ‰ แ‰‚ แŠ แ‹ญแ‹ฐแˆˆแˆ. แˆˆแ‹šแˆ…แˆ แАแ‹ แ‹จ Taobao แˆฐแ‹Žแ‰ฝ แŠจแˆจแŒ…แˆ แŒŠแ‹œ แ‰ แŠแ‰ต, แŠจแˆตแˆแŠ•แ‰ต แŠ แˆ˜แ‰ต แ‰ แŠแ‰ต แ‹ญแˆ˜แˆตแˆ‹แˆ, แˆ‰แŠ แŠ• แ‰ แ‹แˆตแŒก แ‹จแŒˆแАแ‰กแ‰ต. แˆแŠ• แ‹ญแˆฐแŒฃแˆ?

  • แˆแŠญ. แ‰ตแŠ•แˆฝ แАแ‹. LuaJIT แŠจ100-200 แŠชแˆŽแ‰ฃแ‹ญแ‰ต แ‹จแˆ›แˆ…แ‹ฐแˆจ แ‰ตแ‹แˆตแ‰ณ แ‰ แˆ‹แ‹ญ แŠฅแŠ“ แŠ แАแˆตแ‰ฐแŠ› แ‹จแŠ แˆแƒแ€แˆ แ‰ตแˆญแ แ‹ญแˆฐแŒฃแˆแข
  • แแŒฅแАแ‰ต. แ‹จ LuaJIT แŠ แˆตแ‰ฐแˆญแŒ“แˆš แ‰ แ‰ฅแ‹™ แˆแŠ”แ‰ณแ‹Žแ‰ฝ แŠจ C แŒ‹แˆญ แ‹ญแ‰€แˆซแˆจแ‰ฃแˆแฃ แ‰ แŠ แŠ•แ‹ณแŠ•แ‹ต แˆแŠ”แ‰ณแ‹Žแ‰ฝ แ‰ แŒƒแ‰ซ แ‹ญแˆธแАแ‹แˆแฃ แ‰ แˆŒแˆ‹ แ‰ แŠฉแˆ แ‹ฐแŒแˆž แ‹ญแ‰ แˆแŒ แ‹‹แˆแข แˆˆแ‰ฐแ‹ˆแˆฐแА แŒŠแ‹œ แ‰ แŒฃแˆ แŒฅแˆฉแ‹ แ‹จแŒ‚แŠ แ‹ญแ‰ฒ แŠฎแˆแ•แˆŒแ‰ฐแˆญ แŠฅแŠ•แ‹ฐ แŒฅแ‰ แ‰ฅ แˆแŠ”แ‰ณ แ‹ญแ‰†แŒ แˆญ แАแ‰ แˆญแข แŠ แˆแŠ• แ‰€แ‹แ‰ƒแ‹›แ‹Žแ‰ฝ แŠ แˆ‰, แŒแŠ• แ‰ แŒฃแˆ แŠจแ‰ฃแ‹ต แŠ“แ‰ธแ‹, แˆˆแˆแˆณแˆŒ, แ‰ฐแˆ˜แˆณแˆณแ‹ญ V8. แŠ แŠ•แ‹ณแŠ•แ‹ต แ‹จแŒ„แŠคแˆต แ‰ฐแˆญแŒ“แˆšแ‹Žแ‰ฝ แŠฅแŠ“ แŒƒแ‰ซ แˆ†แ‰ตแˆตแ–แ‰ต แ‰ แŠ แŠ•แ‹ณแŠ•แ‹ต แ‰ฆแ‰ณแ‹Žแ‰ฝ แˆแŒฃแŠ• แŠ“แ‰ธแ‹แฃ แАแŒˆแˆญ แŒแŠ• แ‰ แŠ แŠ•แ‹ณแŠ•แ‹ต แ‰ฆแ‰ณแ‹Žแ‰ฝ แŠ แˆแŠ•แˆ แ‹ญแˆธแАแ‹แˆ‰แข
  • แˆˆแˆ˜แˆ›แˆญ แ‰€แˆ‹แˆ. แ‹จแ”แˆญแˆ แŠฎแ‹ต แ‰คแ‹ แŠซแˆˆแˆ… แŠฅแŠ“ แŠฅแ‹ซแˆตแ‹ซแ‹แŠญ แŠซแˆแˆ†แА แ‹จแแˆญแˆ แ•แˆฎแŒแˆซแˆ˜แˆฎแ‰ฝแŠ• แŠ แ‹ซแŒˆแŠ™แˆแข แŠฅแАแˆฑ แˆตแˆˆแˆŒแˆ‰, แˆแˆ‰แˆ แ‰ฐแ‹ˆแˆตแ‹ฐแ‹‹แˆ, แŠฅแŠ“ แŠฅแАแˆฑแŠ• แˆ›แˆตแ‰ฐแˆ›แˆญ แˆจแŒ…แˆ แŠฅแŠ“ แŠจแ‰ฃแ‹ต แАแ‹. แˆˆแˆŒแˆ‹ แАแŒˆแˆญ แ•แˆฎแŒแˆซแˆ˜แˆฎแ‰ฝแŠ• แŠจแˆแˆˆแŒ‰แฃ แŠฅแŠ•แ‹ฐแŒˆแŠ“ แˆ›แˆฐแˆแŒ แŠ• แ‹ˆแ‹ญแˆ แŠฅแАแˆฑแŠ• แˆ›แŒแŠ˜แ‰ต แˆŠแŠ–แˆญแ‰ฅแ‹Ž แ‹ญแ‰ฝแˆ‹แˆแข แ‰ แˆ‰แ‹‹ แŒ‰แ‹ณแ‹ญ แˆแˆ‰แˆ แАแŒˆแˆญ แ‰€แˆ‹แˆ แАแ‹แข แˆ›แŠ•แŠ›แ‹แˆ แ‹ˆแŒฃแ‰ต แˆ‰แŠ แŠ• แ‰ แˆถแˆตแ‰ต แ‰€แŠ“แ‰ต แ‹แˆตแŒฅ แˆ˜แˆ›แˆญ แ‹ญแ‰ฝแˆ‹แˆแข แˆˆแˆ›แ‹ˆแ‰… แˆแˆˆแ‰ต แˆฐแ‹“แ‰ต แ‹ซแˆ…แˆ แˆแŒ…แ‰ถแ‰ฅแŠ›แˆแข แŠจแˆแˆˆแ‰ต แˆฐแ‹“แ‰ณแ‰ต แ‰ แŠ‹แˆ‹ แ‰ แˆแˆญแ‰ต แ‹แˆตแŒฅ แŠฎแ‹ต แŠฅแŒฝแ‹แˆˆแˆ แข แŠจแŠ แŠ•แ‹ต แˆณแˆแŠ•แ‰ต แŒˆแ‹ฐแˆ› แ‰ แŠ‹แˆ‹ แ‰ แ‰€แŒฅแ‰ณ แ‹ˆแ‹ฐ แˆแˆญแ‰ต แˆ„แ‹ถ แˆ„แ‹ฐแข

แ‰ แ‹แŒคแ‰ฑแˆ, แ‹ญแˆ…แŠ•แŠ• แ‹ญแˆ˜แˆตแˆ‹แˆ.

OpenRestyแก NGINXแŠ• แ‹ˆแ‹ฐ แˆ™แˆ‰ แ‹จแˆ˜แ‰ฐแŒแ‰ แˆชแ‹ซ แŠ แŒˆแˆแŒ‹แ‹ญ แˆ˜แ‰€แ‹จแˆญ

แŠฅแ‹šแˆ… แ‰ฅแ‹™ แАแŒˆแˆญ แŠ แˆˆแข OpenResty แˆแˆˆแ‰ฑแŠ•แˆ แˆ‰แˆฝ แŠฅแŠ“ แˆžแ‰ฐแˆญ แˆžแŒแˆŽแ‰ฝแŠ• แˆฐแ‰ฅแˆตแ‰งแˆแข แŠฅแŠ“ แˆแˆ‰แˆ แАแŒˆแˆญ แ‹แŒแŒ แАแ‹ - แ‹จแ‰ฐแˆฐแˆ›แˆซ แŠฅแŠ“ แ‹จแˆšแˆฐแˆซแข

แˆแˆณแˆŒแ‹Žแ‰ฝ

แŒแŒฅแˆ™ แ‹ญแ‰ แ‰ƒแŠ“แˆแฃ แ‹ˆแ‹ฐ แŠฎแ‹ฑ แŠฅแŠ•แˆ‚แ‹ตแข แ‰ตแŠ•แˆฝ แˆ„แˆŽ แŠ แˆˆแˆ แŠฅแАแˆ†แก-

OpenRestyแก NGINXแŠ• แ‹ˆแ‹ฐ แˆ™แˆ‰ แ‹จแˆ˜แ‰ฐแŒแ‰ แˆชแ‹ซ แŠ แŒˆแˆแŒ‹แ‹ญ แˆ˜แ‰€แ‹จแˆญ

แˆแŠ• แŠ แˆˆ? แ‹ญแˆ… แ‹จแŠขแŠ•แŒ‚แŠ–แ‰ฝ แˆ˜แŒˆแŠ› แАแ‹แข แŠ แŠ•แŒจแАแ‰…แˆ, แ‹จแˆซแˆณแ‰ฝแŠ•แŠ• แˆ›แ‹žแˆชแ‹ซ แŠ แŠ•แŒฝแแˆ, แ‹แŒแŒ แ‹จแˆ†แАแŠ• แŠ แŠ•แ‹ˆแˆตแ‹ตแˆ - แ‰€แ‹ตแˆžแ‹แŠ‘ แ‰  NGINX แ‹แˆตแŒฅ แŠ แˆˆแŠ•, แŒฅแˆฉ แŠฅแŠ“ แˆฐแАแ แˆ…แ‹ญแ‹ˆแ‰ต แŠฅแŠ•แŠ–แˆซแˆˆแŠ•.

content_by_lua_block แ‹จแˆ‰แŠ  แˆตแŠญแˆชแ•แ‰ต แ‰ แˆ˜แŒ แ‰€แˆ แ‹ญแ‹˜แ‰ตแŠ• แŠฅแ‹ซแŒˆแˆˆแŒˆแˆแŠ• แАแ‹ แ‹จแˆšแˆ แ‰ฅแˆŽแŠญ แАแ‹แข แ‹จแŠขแŠ•แŒ‚แŠ–แ‰ฝแŠ• แ‰ฐแˆˆแ‹‹แ‹‹แŒญ แŠฅแŠ•แ‹ˆแˆตแ‹ณแˆˆแŠ• 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 แˆšแˆŠแˆฐแŠจแŠ•แ‹ถแ‰ฝ แ‹แˆตแŒฅ แˆ˜แˆแˆต แŠฅแŠ“แŒˆแŠ›แˆˆแŠ•.

แˆฐแАแ แˆตแˆˆแˆ†แŠ•แŠ• HTTP แŠฅแŠ“ แˆ˜แˆธแŒŽแŒซ แŠ แ‹ซแ‹ซแ‹แŠ• แˆ˜แŒปแ แˆตแˆˆแˆ›แŠ•แˆแˆแŒ NGINX แˆแˆ‰แŠ•แˆ แАแŒˆแˆญ แŠฅแŠ•แ‹ฒแ‹ซแ‹ฐแˆญแŒแˆแŠ• แŠฅแŠ“แ‹ฐแˆญแŒ‹แˆˆแŠ•แข แŠฅแŠ•แ‹ณแ‹จแŠธแ‹ แŒฅแ‹ซแ‰„ แАแ‰ แˆญแข url/fetchแŠฅแАแˆ† แŠฅแˆฑแก-

OpenRestyแก NGINXแŠ• แ‹ˆแ‹ฐ แˆ™แˆ‰ แ‹จแˆ˜แ‰ฐแŒแ‰ แˆชแ‹ซ แŠ แŒˆแˆแŒ‹แ‹ญ แˆ˜แ‰€แ‹จแˆญ

แ‰€แˆ‹แˆ แŠฅแŠ“แ‹ฐแˆญแŒ‹แˆˆแŠ• proxy_pass, แˆ˜แˆธแŒŽแŒซ แ‹จแ‰ต แŠฅแŠ•แ‹ณแˆˆ, แŠฅแŠ•แ‹ดแ‰ต แˆ›แ‹ตแˆจแŒ แŠฅแŠ•แ‹ณแˆˆแ‰ฅแŠ• แŠฅแŠ•แŒ แ‰แˆ›แˆˆแŠ•, แŠฅแŠ“ แˆแˆ‰แˆ แАแŒˆแˆญ แˆˆแŠฅแŠ› แ‹ญแˆฐแˆซแˆ.

แŒแŠ• แ‹ญแˆ… แ‰ แ‰‚ แŠ แ‹ญแ‹ฐแˆˆแˆ, แŠ แˆแŠ•แˆ แˆ˜แˆจแŒƒแ‹แŠ• แˆˆแ‰ฐแŒ แ‰ƒแˆšแ‹ แˆ˜แˆตแŒ แ‰ต แŠ แˆˆแ‰ฅแŠ•. แ‰ แŒฃแˆ แ‰€แˆ‹แˆ‰ แˆ€แˆณแ‰ฅ แˆแˆ‰แŠ•แˆ แАแŒˆแˆญ แ‰  JSON แ‹แˆตแŒฅ แฃ แ‰ แ‰€แˆ‹แˆ‰ แฃ แ‰ แˆแˆˆแ‰ต แˆ˜แˆตแˆ˜แˆฎแ‰ฝ แ‹แˆตแŒฅ แˆ˜แ‹ฐแˆญแ‹ฐแˆญ แАแ‹แข แ‹จแ‹ญแ‹˜แ‰ต แŠ แ‹ญแАแ‰ต แŠฅแŠ•แˆฐแŒฃแˆˆแŠ• JSON แŠฅแŠ•แˆฐแŒฃแˆˆแŠ•แข

แŒแŠ• แŠ แŠ•แ‹ต แ‰ฝแŒแˆญ แŠ แˆˆแก แ‰ฐแŒ แ‰ƒแˆšแ‹ JSON แˆ›แŠ•แ‰ แ‰ฅ แŠ แ‹ญแˆแˆแŒแˆแข แ‹จแŠแ‰ต-แˆ˜แŒจแˆจแˆป แŒˆแŠ•แ‰ขแ‹Žแ‰ฝแŠ• แˆ˜แˆณแ‰ฅ แŠ แˆˆแ‰ฅแŠ•แข แŠ แŠ•แ‹ณแŠ•แ‹ต แŒŠแ‹œ แˆ˜แŒ€แˆ˜แˆชแ‹ซ แˆ‹แ‹ญ แ‹ญแˆ…แŠ• แˆ›แ‹ตแˆจแŒ แŠ แŠ•แˆแˆแŒแˆแข แŠฅแŠ“ แ‹จ SEO แˆตแ”แˆปแˆŠแˆตแ‰ถแ‰ฝ แˆตแ‹•แˆŽแ‰ฝแŠ• แ‹จแˆแŠ•แˆแˆแŒ แŠจแˆ†แА แˆˆแŠฅแАแˆฑ แˆแŠ•แˆ แˆˆแ‹แŒฅ แ‹จแˆˆแ‹แˆ แ‹ญแˆ‹แˆ‰. แŠฅแŠ“ แŠ แŠ•แ‹ณแŠ•แ‹ต แ‹ญแ‹˜แ‰ถแ‰ฝแŠ• แŠจแˆฐแŒ แŠ“แ‰ธแ‹ แ‹จแแˆˆแŒ‹ แ•แˆฎแŒแˆซแˆžแ‰ปแ‰ฝแŠ• แˆแŠ•แˆ แАแŒˆแˆญ แŠ แ‹ญแŒ แ‰แˆ™แˆ แ‹ญแˆ‹แˆ‰.

แˆตแˆˆ แŠฅแˆฑ แˆแŠ• แˆ›แ‹ตแˆจแŒ แŠ แˆˆแ‰ แ‰ต? แ‰ แŠฅแˆญแŒแŒฅ แˆˆแ‰ฐแŒ แ‰ƒแˆšแ‹ HTML แŠฅแŠ•แˆฐแŒ แ‹‹แˆˆแŠ•แข แ‰ แŠฅแŒ… แˆ›แˆ˜แŠ•แŒจแ‰ต comme il faut แŠ แ‹ญแ‹ฐแˆˆแˆแฃ แˆตแˆˆแ‹šแˆ… แŠ แ‰ฅแАแ‰ถแ‰ฝแŠ• แˆ˜แŒ แ‰€แˆ แŠฅแŠ•แˆแˆแŒ‹แˆˆแŠ•แข แˆˆแ‹šแˆ… แ‰คแ‰ฐ-แˆ˜แŒฝแˆแแ‰ต แŠ แˆˆ lua-resty-template.

OpenRestyแก NGINXแŠ• แ‹ˆแ‹ฐ แˆ™แˆ‰ แ‹จแˆ˜แ‰ฐแŒแ‰ แˆชแ‹ซ แŠ แŒˆแˆแŒ‹แ‹ญ แˆ˜แ‰€แ‹จแˆญ

แˆฆแˆตแ‰ฑแŠ• แŠ แˆตแˆแˆช แŠแ‹ฐแˆ‹แ‰ต แŠฆแ’แŠคแˆ แŠ แ‹ญแ‰ฐแˆ… แ‹ญแˆ†แŠ“แˆแข OpenResty แŠจแˆซแˆฑ แ‹จแŒฅแ‰…แˆ แŠ แ‰€แŠ“แ‰ฃแˆช แŒ‹แˆญ แŠ แ‰ฅแˆฎ แ‹ญแˆ˜แŒฃแˆแฃแ‰ แ‹šแˆ…แˆ แ‰ฅแ‹™ แ‹จแ‰ฐแˆˆแ‹ซแ‹ฉ แˆžแŒแˆŽแ‰ฝแŠ• แ‰ แ‰ฐแˆˆแ‹ญแˆแฃ lua-resty-template. แ‹ญแˆ… แŠจแŒƒแŠ•แŒŽ แŠ แ‰ฅแАแ‰ถแ‰ฝ แŒ‹แˆญ แ‰ฐแˆ˜แˆณแˆณแ‹ญ แ‹จแˆ†แА แ‰€แˆ‹แˆ แ‹จแŠ แ‰ฅแАแ‰ต แˆžแ‰ฐแˆญ แАแ‹แข แŠฅแ‹šแ‹ซ แŠฎแ‹ต แˆ˜แŒปแ แŠฅแŠ“ แ‰ฐแˆˆแ‹‹แ‹‹แŒญ แˆแ‰ตแŠญ แˆ›แŠจแŠ“แ‹ˆแŠ• แ‹ญแ‰ฝแˆ‹แˆ‰.

แ‰ แ‹แŒคแ‰ฑแˆ, แˆแˆ‰แˆ แАแŒˆแˆญ แŠฅแŠ•แ‹ฐแ‹šแˆ… แ‹ซแˆˆ แАแŒˆแˆญ แ‹ญแˆ˜แˆตแˆ‹แˆ.

OpenRestyแก NGINXแŠ• แ‹ˆแ‹ฐ แˆ™แˆ‰ แ‹จแˆ˜แ‰ฐแŒแ‰ แˆชแ‹ซ แŠ แŒˆแˆแŒ‹แ‹ญ แˆ˜แ‰€แ‹จแˆญ

แ‹แˆ‚แ‰กแŠ• แ‹ˆแˆตแ‹ฐแŠ• แŠ แ‰ฅแАแ‰ฑแŠ• แŠฅแŠ•แ‹ฐแŒˆแŠ“ แ‰ แˆแˆˆแ‰ต แˆ˜แˆตแˆ˜แˆฎแ‰ฝ แŠ แ‹ฐแˆจแŒแŠ•. แ‰ฐแŒ แ‰ƒแˆšแ‹ แ‹ฐแˆตแ‰ฐแŠ› แАแ‹, แ‹ตแˆ˜แ‰ถแ‰ฝแŠ• แ‰ฐแ‰€แ‰ฅแˆแˆ. แŒฅแ‹ซแ‰„แ‹แŠ• แˆตแˆ‹แˆฐแ‹แŠ• แˆˆแ‹ตแˆ˜แ‰ถแ‰ฝ แ‹จแˆšแˆ†แŠ• แ‹จแ€แŒ‰แˆญ แˆ›แŠ…แ‰ฐแˆ แ‰ฐแ‰€แ‰ แˆˆแข แ‰ แŒญแˆซแˆฝ แŠ แ‰ณแ‹แ‰แˆแฃ แˆแŠ“แˆแ‰ฃแ‰ต แŠฅแˆฑ แ‰ แ‰ตแŠญแŠญแˆ แ‹ญแˆ…แŠ•แŠ• แŠฅแ‹จแˆแˆˆแŒˆ แˆŠแˆ†แŠ• แ‹ญแ‰ฝแˆ‹แˆแฃ แАแŒˆแˆญ แŒแŠ• แŒฅแ‹ซแ‰„แ‹แŠ• แ‰ แ‰ตแŠญแŠญแˆ แˆ›แ‹˜แŒ‹แŒ€แ‰ต แŠ แˆแ‰ปแˆˆแˆแข

แˆแˆ‰แˆ แАแŒˆแˆญ แŠ แˆชแ แАแ‹แฃ แŒแŠ• แŠฅแŠ› แ‰ แˆ˜แŒˆแŠ•แ‰ฃแ‰ต แˆ‹แ‹ญ แАแŠ• แŠฅแŠ“ แˆˆแ‰ฐแŒ แ‰ƒแˆšแ‹Žแ‰ฝ แŠฅแˆตแŠซแˆแŠ• แˆ›แˆณแ‹จแ‰ต แŠ แŠ•แˆแˆแŒแˆแข แˆแ‰ƒแ‹ฑแŠ• แŠฅแŠ“แ‹ตแˆญแŒแข แ‹ญแˆ…แŠ•แŠ• แˆˆแˆ›แ‹ตแˆจแŒแฃ NGINX แŒฅแ‹ซแ‰„แ‹แŠ• แ‰ OpenResty แ‹แˆŽแ‰ฝ แŠฅแŠ•แ‹ดแ‰ต แŠฅแŠ•แ‹ฐแˆšแ‹ญแ‹ แŠฅแŠ•แˆ˜แˆแŠจแ‰ตแก-

  • แ‹จแˆ˜แŒ€แˆ˜แˆชแ‹ซ แ‹ฐแˆจแŒƒ - แˆ˜แ‹ณแˆจแˆป, แ‰ฐแŒ แ‰ƒแˆšแ‹ แˆแŠญ แŠฅแŠ•แ‹ฐแ‹ฐแˆจแˆฐ, แŠฅแŠ“ แ‰ แŠ แˆญแŠฅแˆตแ‰ถแ‰ฝ, แ‰ แŠ แ‹ญแ’ แŠ แ‹ตแˆซแˆป แŠฅแŠ“ แ‰ แˆŒแˆ‹ แ‹แˆ‚แ‰ฅ แ‰ฐแˆ˜แˆˆแŠจแ‰ตแАแ‹. แŠซแˆแ‹ˆแ‹ฐแ‹ตแŠ• แ‹ˆแ‹ฒแ‹ซแ‹แŠ‘ แˆแŠ•แ‰†แˆญแŒ แ‹ แŠฅแŠ•แ‰ฝแˆ‹แˆˆแŠ•. แ‹ญแˆ… แˆˆแแ‰ƒแ‹ต แˆŠแ‹ซแŒˆแˆˆแŒแˆ แ‹ญแ‰ฝแˆ‹แˆแฃ แ‹ˆแ‹ญแˆ แ‰ฅแ‹™ แŒฅแ‹ซแ‰„แ‹Žแ‰ฝแŠ• แŠจแ‰ฐแ‰€แ‰ แˆแŠ•แฃ แ‰ แ‹šแˆ… แ‹ฐแˆจแŒƒ แ‰ แ‰€แˆ‹แˆ‰ แˆ›แ‰‹แˆจแŒฅ แŠฅแŠ•แ‰ฝแˆ‹แˆˆแŠ•แข
  • แŠฅแŠ•แ‹ฐแŒˆแŠ“ แŒปแ. แŠ แŠ•แ‹ณแŠ•แ‹ต แ‹จแŒฅแ‹ซแ‰„ แ‹แˆ‚แ‰ฅแŠ• แŠฅแŠ•แ‹ฐแŒˆแŠ“ แŠฅแŠ•แŒฝแ‹แˆˆแŠ•แข
  • แ‹ญแ‹˜แ‰ต. แ‹ญแ‹˜แ‰ฑแŠ• แˆˆแ‰ฐแŒ แ‰ƒแˆšแ‹ แŠฅแŠ“แ‹ฐแˆญแˆณแˆˆแŠ•แข
  • แˆซแˆตแŒŒแ‹Žแ‰ฝ แˆ›แŒฃแˆชแ‹ซ. แ‹จแˆแˆ‹แˆฝ แˆซแˆตแŒŒแ‹Žแ‰ฝแŠ• แŠฅแŠ•แ‰ฐแŠซแˆˆแŠ•. แŠจแ‰ฐแŒ แ‰€แˆแŠ• proxy_passแˆˆแ‰ฐแŒ แ‰ƒแˆšแ‹ แŠจแˆ˜แˆตแŒ แ‰ณแ‰ฝแŠ• แ‰ แŠแ‰ต แŠ แŠ•แ‹ณแŠ•แ‹ต แˆซแˆตแŒŒแ‹Žแ‰ฝแŠ• แŠฅแŠ•แ‹ฐแŒˆแŠ“ แˆ˜แƒแ แŠฅแŠ•แ‰ฝแˆ‹แˆˆแŠ•แข
  • แ‹จแˆฐแ‹แАแ‰ต แˆ›แŒฃแˆชแ‹ซ. แˆฐแ‹แАแ‰ณแ‰ฝแŠ•แŠ• แˆ˜แˆˆแ‹ˆแŒฅ แŠฅแŠ•แ‰ฝแˆ‹แˆˆแŠ•.
  • แˆ˜แ‹แŒˆแ‰ฅ - แˆแ‹แŒแ‰ฅ แˆ›แˆตแ‰ณแ‹ˆแˆป. แ‹ซแˆˆ แ‰ฐแŒจแˆ›แˆช แŠ•แ‰ฅแˆญแ‰ฅแˆญ แ‰ elasticsearch แ‹แˆตแŒฅ แˆแ‹แŒแ‰ฅ แˆ›แˆตแ‰ณแ‹ˆแˆปแ‹Žแ‰ฝแŠ• แˆ˜แŒปแ แ‹ญแ‰ฝแˆ‹แˆ‰แข

แ‹จแŠฅแŠ› แแ‰ƒแ‹ต แŠฅแŠ•แ‹ฐแ‹šแˆ… แ‹ซแˆˆ แАแŒˆแˆญ แ‹ญแˆ˜แˆตแˆ‹แˆแข

OpenRestyแก NGINXแŠ• แ‹ˆแ‹ฐ แˆ™แˆ‰ แ‹จแˆ˜แ‰ฐแŒแ‰ แˆชแ‹ซ แŠ แŒˆแˆแŒ‹แ‹ญ แˆ˜แ‰€แ‹จแˆญ

แ‹ญแˆ…แŠ•แŠ• แ‹ˆแ‹ฐแ‹šแ‹ซ แŠฅแŠ•แŒจแˆแˆซแˆˆแŠ• location, แ‰€แ‹ฐแˆ แ‰ฅแˆˆแŠ• แ‹จแŒˆแˆˆแ…แАแ‹แŠ• แŠฅแŠ“ แ‹จแˆšแŠจแ‰ฐแˆˆแ‹แŠ• แŠฎแ‹ต แŠฅแ‹šแ‹ซ แˆ‹แ‹ญ แŠ แˆตแ‰€แˆแŒ แ‹.

OpenRestyแก NGINXแŠ• แ‹ˆแ‹ฐ แˆ™แˆ‰ แ‹จแˆ˜แ‰ฐแŒแ‰ แˆชแ‹ซ แŠ แŒˆแˆแŒ‹แ‹ญ แˆ˜แ‰€แ‹จแˆญ

แ‹จแŠฉแŠช แ‰ถแŠจแŠ• แŠฅแŠ•แ‹ณแˆˆแŠ• แˆˆแˆ›แ‹จแ‰ต แŠฅแŠ•แˆžแŠญแˆซแˆˆแŠ•แข แŠซแˆแˆ†แАแฃ แแ‰ƒแ‹ต แŠฅแŠ•แŒ แ‹ญแ‰ƒแˆˆแŠ•แข แ‰ฐแŒ แ‰ƒแˆšแ‹Žแ‰ฝ แ‰ฐแŠ•แŠฎแˆˆแŠ› แŠ“แ‰ธแ‹ แŠฅแŠ“ แ‹จแŠฉแŠช แˆ›แˆตแˆ˜แˆฐแ‹ซ แˆ›แ‹˜แŒ‹แŒ€แ‰ต แŠฅแŠ•แ‹ฐแˆšแ‹ซแˆตแˆแˆแŒ‹แ‰ธแ‹ แˆ˜แŒˆแˆ˜แ‰ต แ‹ญแ‰ฝแˆ‹แˆ‰แข แˆตแˆˆแ‹šแˆ… แ‰ แˆฌแ‹ฒแˆต แ‹แˆตแŒฅแˆ แŠฅแŠ“แˆตแ‰€แˆแŒ แ‹‹แˆˆแŠ•แก-

OpenRestyแก NGINXแŠ• แ‹ˆแ‹ฐ แˆ™แˆ‰ แ‹จแˆ˜แ‰ฐแŒแ‰ แˆชแ‹ซ แŠ แŒˆแˆแŒ‹แ‹ญ แˆ˜แ‰€แ‹จแˆญ

แŠจRedis แŒ‹แˆญ แˆˆแˆ˜แˆตแˆซแ‰ต แŠฎแ‹ต แ‰ แŒฃแˆ แ‰€แˆ‹แˆ แŠฅแŠ“ แŠจแˆŒแˆŽแ‰ฝ แ‰‹แŠ•แ‰‹แ‹Žแ‰ฝ แ‹จแ‰ฐแˆˆแ‹จ แŠ แ‹ญแ‹ฐแˆˆแˆแข แ‰ แ‰ฐแˆ˜แˆณแˆณแ‹ญ แŒŠแ‹œ, แˆแˆ‰แˆ แŒแ‰ฅแŠ แ‰ต / แ‹แ…แ‹“แ‰ต, แŠฅแ‹šแˆ… แŠฅแŠ“ แŠฅแ‹šแ‹ซ, แŠ แ‹ญแ‰ณแŒˆแ‹ตแˆ. แ‹จแ‰ฐแˆ˜แˆณแˆฐแˆˆ แŠฎแ‹ต แŠจแŒปแ‰แฃ แ‰ แˆ›แ‹ญแˆ˜แˆณแˆฐแˆ แˆ˜แˆแŠฉ แ‹ญแˆฐแˆซแˆแข แŠจแˆžแˆ‹ แŒŽแ‹ฐแˆ gevent แŠฅแŠ•แ‹ฐ, แАแŒˆแˆญ แŒแŠ• แ‰ แ‹ฐแŠ•แ‰ฅ แ‰ฐแŠจแŠ“แ‹แŠ—แˆ.

OpenRestyแก NGINXแŠ• แ‹ˆแ‹ฐ แˆ™แˆ‰ แ‹จแˆ˜แ‰ฐแŒแ‰ แˆชแ‹ซ แŠ แŒˆแˆแŒ‹แ‹ญ แˆ˜แ‰€แ‹จแˆญ

แˆแ‰€แ‹ณแ‹แŠ• แŠฅแˆซแˆฑ แŠฅแŠ“แ‹ตแˆญแŒแก-

OpenRestyแก NGINXแŠ• แ‹ˆแ‹ฐ แˆ™แˆ‰ แ‹จแˆ˜แ‰ฐแŒแ‰ แˆชแ‹ซ แŠ แŒˆแˆแŒ‹แ‹ญ แˆ˜แ‰€แ‹จแˆญ

แ‹จแŒฅแ‹ซแ‰„แ‹แŠ• แŠ แŠซแˆ แˆ›แŠ•แ‰ แ‰ฅ แŠ แˆˆแ‰ฅแŠ• แŠฅแŠ•แˆ‹แˆˆแŠ•แข แ‹จPOST แŠญแˆญแŠญแˆฎแ‰ฝแŠ• แŠฅแŠ•แ‰€แ‰ แˆ‹แˆˆแŠ• แŠฅแŠ“ แ‹จแˆ˜แŒแ‰ขแ‹ซ แŠฅแŠ“ แ‹จแ‹ญแˆˆแ แ‰ƒแˆ แ‰ตแŠญแŠญแˆ แˆ˜แˆ†แŠ“แ‰ธแ‹แŠ• แŠฅแŠ•แˆแ‰ตแˆปแˆˆแŠ•แข แ‰ตแŠญแŠญแˆ แŠซแˆแˆ†แŠ‘แฃ แแ‰ƒแ‹ต แŠฅแŠ•แ‹ฒแˆฐแŒกแŠ• แŠฅแŠ•แ‰ƒแ‹ˆแˆแ‹Žแ‰ณแˆˆแŠ•แข แŠฅแŠ“ แ‰ตแŠญแŠญแˆ แŠจแˆ†แА แˆแˆแŠญแ‰ฑแŠ• แ‰ แˆฌแ‹ฒแˆต แ‹แˆตแŒฅ แ‹ญแƒแ‰แก-

OpenRestyแก NGINXแŠ• แ‹ˆแ‹ฐ แˆ™แˆ‰ แ‹จแˆ˜แ‰ฐแŒแ‰ แˆชแ‹ซ แŠ แŒˆแˆแŒ‹แ‹ญ แˆ˜แ‰€แ‹จแˆญ

แŠฉแŠชแ‹แŠ• แˆ›แ‹˜แŒ‹แŒ€แ‰ตแ‹ŽแŠ• แŠ แ‹ญแˆญแˆฑ, แ‹ญแˆ… แŠฅแŠ•แ‹ฒแˆ แ‰ แˆแˆˆแ‰ต แˆ˜แˆตแˆ˜แˆฎแ‰ฝ แ‹ญแŠจแŠ“แ‹ˆแŠ“แˆ.

OpenRestyแก NGINXแŠ• แ‹ˆแ‹ฐ แˆ™แˆ‰ แ‹จแˆ˜แ‰ฐแŒแ‰ แˆชแ‹ซ แŠ แŒˆแˆแŒ‹แ‹ญ แˆ˜แ‰€แ‹จแˆญ

แˆแˆณแˆŒแ‹ แ‰€แˆ‹แˆ แŠฅแŠ“ แŒแˆแ‰ณแ‹Š แАแ‹. แ‰ แŠฅแˆญแŒแŒฅ แˆˆแˆฐแ‹Žแ‰ฝ แ‹ตแˆ˜แ‰ถแ‰ฝแŠ• แ‹จแˆšแ‹ซแˆณแ‹ญ แŠ แŒˆแˆแŒแˆŽแ‰ต แŠ แŠ•แˆฐแˆซแˆ. แŒแŠ• แˆ›แŠ• แ‹ซแ‹แ‰ƒแˆแข แˆตแˆˆแ‹šแˆ… แ‰ แˆแˆญแ‰ต แ‹แˆตแŒฅ แˆแŠ• แˆŠแ‹ฐแˆจแŒ แŠฅแŠ•แ‹ฐแˆšแ‰ฝแˆ แŠฅแŠ•แˆ˜แˆแŠจแ‰ต.

  • แŠ แАแˆตแ‰ฐแŠ› แŒ€แˆญแ‰ฃ. แŠ แŠ•แ‹ณแŠ•แ‹ต แŒŠแ‹œ แ‰ตแŠ•แˆฝ แ‹ณแ‰ณ แ‹ˆแ‹ฐ แŒ€แˆญแ‰ฃ แˆ›แ‹แŒฃแ‰ต แŠ แˆˆแ‰ฅแŠ•แก แ‹จแˆ†แА แ‰ฆแ‰ณ แ‰€แŠ• แˆ›แˆตแŒˆแ‰ฃแ‰ต แŠ แˆˆแ‰ฅแŠ•แฃ แ‹จแˆ†แА แ‰ฆแ‰ณ แ‹แˆญแ‹แˆญ แˆ›แˆณแ‹จแ‰ต แŠ แˆˆแ‰ฅแŠ•แฃ แŠ แˆแŠ• แ‰ แŒฃแ‰ขแ‹ซแ‹ แˆ‹แ‹ญ แˆแŠ• แ‹ซแˆ…แˆ แ‰ฐแŒ แ‰ƒแˆšแ‹Žแ‰ฝ แŠฅแŠ•แ‹ณแˆ‰ แ‹ญแŠ“แŒˆแˆฉแฃ แ‰†แŒฃแˆช แ‹ˆแ‹ญแˆ แˆตแ‰ณแ‰ฒแˆตแ‰ฒแŠญแˆต แ‹ซแ‹ซแ‹ญแ‹™แข แ‰ แŒฃแˆ แ‰ตแŠ•แˆฝ แ‹จแˆ†แА แАแŒˆแˆญ. แŠ แŠ•แ‹ณแŠ•แ‹ต แŠ แАแˆตแ‰ฐแŠ› แ‰แˆญแŒฅแˆซแŒฎแ‰ฝ แ‰ แŒฃแˆ แ‰ แ‰€แˆ‹แˆ‰ แˆŠแˆ แˆฉ แ‹ญแ‰ฝแˆ‹แˆ‰. แ‹ญแˆ… แˆแŒฃแŠ•, แ‰€แˆ‹แˆ แŠฅแŠ“ แ‰ณแˆ‹แ‰… แ‹ซแ‹ฐแˆญแŒˆแ‹‹แˆ.
  • แ‹จแ‹แˆ‚แ‰ฅ แ‰…แ‹ตแˆ˜ แˆ‚แ‹ฐแ‰ต. แŠ แŠ•แ‹ณแŠ•แ‹ต แŒŠแ‹œ แˆ›แˆตแ‰ณแ‹ˆแ‰‚แ‹ซแ‹Žแ‰ฝแŠ• แ‹ˆแ‹ฐ แŒˆแŒปแ‰ฝแŠ• แˆ˜แŠญแ‰ฐแ‰ต แŠฅแŠ•แˆแˆแŒ‹แˆˆแŠ•แฃ แŠฅแŠ“ แ‹ญแˆ…แŠ• แˆ›แˆตแ‰ณแ‹ˆแ‰‚แ‹ซ แ‹จแˆแŠ•แ‰€แ‰ แˆˆแ‹ แ‹จแŠคแ’แŠ แ‹ญ แŒฅแ‹ซแ‰„แ‹Žแ‰ฝแŠ• แ‰ แˆ˜แŒ แ‰€แˆ แАแ‹แข แŠฅแ‹šแˆ… แˆ›แ‹ตแˆจแŒ แ‰ แŒฃแˆ แ‰€แˆ‹แˆ แАแ‹. แ‰€แ‹ตแˆžแ‹แŠ•แˆ แ‰ฐแ‰€แˆแŒฆ แŒ แŠ•แŠญแˆฎ แ‹จแˆšแˆฐแˆซแ‹แŠ• แ‹จแŠ‹แˆˆแŠ› แŠญแแˆ แŠ แŠ•แŒซแŠ•แˆแข แŠฅแ‹šแˆ… แˆ˜แ‹แˆฐแ‹ต แŠฅแŠ“ แˆ˜แˆฐแ‰ฅแˆฐแ‰ฅ แ‹ญแ‰ฝแˆ‹แˆ‰. แŠ แŠ•แ‹ณแŠ•แ‹ต JS แŠ แŠ•แ‹ต แˆ‹แ‹ญ แŠฅแŠ•แˆฐแ‰ แˆตแ‰ฃแˆˆแŠ• แ‹ˆแ‹ญแˆ แ‰ แ‰ฐแ‰ƒแˆซแŠ’แ‹ แˆ˜แแ‰ณแ‰ต แŠฅแŠ“ แ‹จแˆ†แА แАแŒˆแˆญ แˆˆแ‰ฐแŒ แ‰ƒแˆšแ‹ แŠจแˆ˜แˆตแŒ แ‰ณแ‰ฝแŠ• แ‰ แŠแ‰ต แ‰€แ‹ตแˆ˜แŠ• แˆแŠ•แˆฐแˆซแ‹ แŠฅแŠ•แ‰ฝแˆ‹แˆˆแŠ•แข
  • แˆˆแˆ›แ‹ญแŠญแˆฎ แŠ แŒˆแˆแŒแˆŽแ‰ต แ‹จแŠแ‰ต แŒˆแŒฝแ‰ณ. แ‹ญแˆ… แ‹ฐแŒแˆž แ‰ แŒฃแˆ แŒฅแˆฉ แŒ‰แ‹ณแ‹ญ แАแ‹, แŠฅแŠ” แ‰ฐแŒแ‰ฃแˆซแ‹Š แŠ แ‹ตแˆญแŒŒแ‹‹แˆˆแˆ. แŠจแ‹šแ‹ซ แ‰ แŠแ‰ตแฃ แ‹จแŠคแˆŒแŠญแ‰ตแˆฎแŠ’แŠซแ‹Š แˆชแ–แˆญแ‰ต แŠ แ‰€แˆซแˆจแ‰ฅแŠ• แ‰ แˆšแˆ˜แˆˆแŠจแ‰ต แŠฅแŠ“ แ‰ แŠ แŒˆแˆชแ‰ฑ แ‹แˆตแŒฅ แŠซแˆ‰แ‰ต แˆ…แŒ‹แ‹Š แŠ แŠซแˆ‹แ‰ต แŒแˆ›แˆฝ แ‹ซแˆ…แˆ‰ แˆชแ–แˆญแ‰ต แ‰ แˆšแ‹ซแ‰€แˆญแ‰ฅ แ‰ดแŠ•แ‹žแˆญ แŠฉแ‰ฃแŠ•แ‹ซ แ‹แˆตแŒฅ แˆ แˆญแ‰ปแˆˆแˆแข แŠ แŠ•แ‹ต แŠ แŒˆแˆแŒแˆŽแ‰ต แˆแŒ แˆญแŠ• แฃ แ‰ฅแ‹™ แАแŒˆแˆฎแ‰ฝ แŠฅแ‹šแ‹ซแ‹ แ‰ฐแˆ˜แˆณแˆณแ‹ญ แ‹˜แ‹ด แ‰ แˆ˜แŒ แ‰€แˆ แ‰ฐแ‹ฐแˆญแŒˆแ‹‹แˆ-แˆ›แ‹˜แ‹‹แ‹ˆแˆญ แฃ แˆแ‰ƒแ‹ต แŠฅแŠ“ แˆŒแˆŽแ‰ฝแˆแข
    OpenResty แˆˆแˆ›แ‹ญแŠญแˆฎ แˆฐแˆญแ‰ชแˆตแ‹Ž แŠฅแŠ•แ‹ฐ แˆ™แŒซ แˆ†แŠ– แˆŠแ‹ซแŒˆแˆˆแŒแˆ แ‹ญแ‰ฝแˆ‹แˆแฃ แ‹ญแˆ…แˆ แˆˆแˆแˆ‰แˆ แАแŒˆแˆญ แŠ แŠ•แ‹ต แˆ˜แ‹ณแˆจแˆป แŠฅแŠ“ แŠ แŠ•แ‹ต แ‰ แ‹ญแАแŒˆแŒฝ แАแ‹แข แˆ›แ‹ญแŠญแˆฎ แˆฐแˆญแ‰ชแˆต แ‰ แ‹šแˆ… แˆ˜แŠ•แŒˆแ‹ต แˆŠแŒปแ แˆตแˆˆแˆšแ‰ฝแˆ Node.js แŠฅแ‹šแˆ…แฃ แ’แŠคแ‰ฝแ’ แŠฅแ‹šแˆ…แฃ แ“แ‹ญแ‹˜แŠ• แŠฅแ‹šแˆ…แฃ แŠ แŠ•แ‹ณแŠ•แ‹ต แ‹จแŠคแˆญแˆ‹แŠ•แŒ แАแŒˆแˆญ แŠฅแ‹šแˆ… แŠ แˆˆแฃ แŠฅแŠ› แ‰ แˆแˆ‰แˆ แ‰ฆแ‰ณ แ‰ฐแˆ˜แˆณแˆณแ‹ญ แŠฎแ‹ต แˆ˜แƒแ แŠฅแŠ•แ‹ฐแˆ›แŠ•แˆแˆแŒ แŠฅแŠ•แˆจแ‹ณแˆˆแŠ•แข แˆตแˆˆแ‹šแˆ…, OpenResty แŠจแŠแ‰ต แˆˆแŠแ‰ต แˆŠแˆฐแŠซ แ‹ญแ‰ฝแˆ‹แˆ.
  • แˆตแ‰ณแ‰ฒแˆตแ‰ฒแŠญแˆต แŠฅแŠ“ แ‰ตแŠ•แ‰ณแŠ”. แ‰ฅแ‹™แ‹แŠ• แŒŠแ‹œ NGINX แ‰ แˆ˜แŒแ‰ขแ‹ซแ‹ แˆ‹แ‹ญ แАแ‹, แŠฅแŠ“ แˆแˆ‰แˆ แŒฅแ‹ซแ‰„แ‹Žแ‰ฝ แ‰ แŠฅแˆฑ แ‹แˆตแŒฅ แ‹ซแˆแ‹แˆ‰. แˆˆแˆ˜แˆฐแ‰ฅแˆฐแ‰ฅ แ‰ แŒฃแˆ แŠ แˆ˜แ‰บ แ‹จแˆ†แАแ‹ แ‰ แ‹šแˆ… แ‰ฆแ‰ณ แАแ‹. แŠ แŠ•แ‹ต แАแŒˆแˆญ แ‹ˆแ‹ฒแ‹ซแ‹แŠ‘ แˆ›แˆตแˆ‹แ‰ต แŠฅแŠ“ แ‹จแˆ†แА แ‰ฆแ‰ณ แˆ˜แˆตแ‰€แˆ แ‹ญแ‰ฝแˆ‹แˆ‰แฃ แˆˆแˆแˆณแˆŒแฃ Elasticsearchแฃ Logstashแฃ แ‹ˆแ‹ญแˆ แ‰ แ‰€แˆ‹แˆ‰ แ‹ˆแ‹ฐ แˆแ‹แŒแ‰ฅ แˆ›แˆตแ‰ณแ‹ˆแˆปแ‹ แ‹ญแƒแ‰ แŠฅแŠ“ แŠจแ‹šแ‹ซ แ‹จแˆ†แА แ‰ฆแ‰ณ แ‹ญแˆ‹แŠฉแ‰ตแข
  • แ‰ฃแˆˆแ‰ฅแ‹™ แ‰ฐแŒ แ‰ƒแˆš แˆตแˆญแ‹“แ‰ถแ‰ฝ. แˆˆแˆแˆณแˆŒ แ‹จแˆ˜แˆตแˆ˜แˆญ แˆ‹แ‹ญ แŒจแ‹‹แ‰ณแ‹Žแ‰ฝแŠ• แˆˆแˆ˜แˆตแˆซแ‰ต แ‰ แŒฃแˆ แŒฅแˆฉ แŠ“แ‰ธแ‹แข แ‹›แˆฌ แ‰ แŠฌแ• แ‰ณแ‹แŠ• แŠ แˆŒแŠญแˆณแŠ•แ‹ฐแˆญ แŒแˆ‹แ‹ฒแˆฝ OpenRestyแŠ• แ‰ แˆ˜แŒ แ‰€แˆ แ‹จแ‰ฃแˆˆแ‰ฅแ‹™ แ‰ฐแŒซแ‹‹แ‰ฝ แŒจแ‹‹แ‰ณแŠ• แŠฅแŠ•แ‹ดแ‰ต แ‰ แแŒฅแАแ‰ต แˆ˜แ‰ฐแ‹จแ‰ฅ แŠฅแŠ•แ‹ฐแˆšแ‰ปแˆ แ‹ญแŠ“แŒˆแˆซแˆแข
  • แˆ›แŒฃแˆชแ‹ซ แ‹ญแŒ แ‹ญแ‰ (WAF). แ‰ แŠ แˆแŠ‘ แŒŠแ‹œ แˆแˆ‰แŠ•แˆ แŠ แ‹ญแАแ‰ต แ‹จแ‹Œแ‰ฅ แŠ แ•แˆŠแŠฌแˆฝแŠ• แ‹แ‹จแˆญแ‹Žแˆ แˆ˜แˆตแˆซแ‰ต แ‹แˆฝแŠ• แАแ‹แก แ‹จแˆšแˆฐแŒกแ‹‹แ‰ธแ‹แŠ• แ‰ฅแ‹™ แŠ แŒˆแˆแŒแˆŽแ‰ถแ‰ฝ แŠ แˆ‰แข OpenRestyแŠ• แ‰ แˆ˜แŒ แ‰€แˆแฃ แŠฅแŠ•แ‹ฐแแˆ‹แŒŽแ‰ตแ‹Ž แŒฅแ‹ซแ‰„แ‹Žแ‰ฝแŠ• แ‰ แ‰€แˆ‹แˆ‰ แŠฅแŠ“ แ‰ แ‰€แˆ‹แˆ‰ แ‹จแˆšแ‹ซแŒฃแˆซ แŠฅแˆซแˆตแ‹Ž แ‹จแ‹ตแˆญ แˆ˜แ‰ฐแŒแ‰ แˆชแ‹ซ แ‹แ‹จแˆญแ‹Žแˆ แˆ›แ‹ตแˆจแŒ แ‹ญแ‰ฝแˆ‹แˆ‰แข แ“แ‹ญแ‹˜แŠ• แŠซแˆˆแˆ… แ’แŠคแ‰ฝแ’ แ‰ แŠฅแˆญแŒแŒ แŠแАแ‰ต แ‹ˆแ‹ฐ แŠ แŠ•แ‰ฐ แ‹แˆตแŒฅ แŠฅแŠ•แ‹ฐแˆ›แ‹ญแŒˆแ‰ฃ แ‰ฐแˆจแ‹ตแ‰ฐแˆƒแˆแฃ แ‰ แŠฅแˆญแŒแŒฅ แŠจแŠฎแŠ•แˆถแˆ‰ แ‹แˆตแŒฅ แ‹จแ‰ตแŠ›แ‹แˆ แ‰ฆแ‰ณ แˆ‹แ‹ญ แŠซแˆแˆแŒ แˆญแŠจแ‹ แ‰ แˆตแ‰ฐแ‰€แˆญแข MySQL แŠฅแŠ“ Python แŠฅแŠ•แ‹ณแˆˆแˆ… แ‰ณแ‹แ‰ƒแˆˆแˆ…แข แˆแŠ“แˆแ‰ฃแ‰ตแฃ แŠ แŠ•แ‹ต แ‹“แ‹ญแАแ‰ต แ‹จแˆ›แ‹แŒซ แˆ˜แˆปแŒˆแˆชแ‹ซ แˆˆแˆ›แ‹ตแˆจแŒ แŠฅแŠ“ แ‹จแˆ†แА แАแŒˆแˆญ แ‹ˆแ‹ฐ แ‹ณแ‰ณแ‰คแ‹ แ‹แˆตแŒฅ แˆˆแˆ›แˆตแŒˆแ‰ฃแ‰ต แˆŠแˆžแŠญแˆฉ แ‹ญแ‰ฝแˆ‹แˆ‰แข แˆตแˆˆแ‹šแˆ…แฃ แŠฅแŠ•แŒแ‹ณ แ‹จแˆ†แŠ‘ แˆ˜แŒ แ‹ญแ‰†แ‰ฝแŠ• แ‰ แแŒฅแАแ‰ต แŠฅแŠ“ แ‰ แˆญแŠซแˆฝ แŠแ‰ต แˆˆแŠแ‰ต แˆ›แŒฃแˆซแ‰ต แ‹ญแ‰ฝแˆ‹แˆ‰แข
  • แˆ›แˆ…แ‰ แˆจแˆฐแ‰ฅ. OpenResty แ‰ NGINX แˆ‹แ‹ญ แˆตแˆˆแ‰ฐแŒˆแАแ‰ฃแฃ แŒ‰แˆญแˆป แŠ แˆˆแ‹ - แ‹ญแˆ… NGINX แˆ›แˆ…แ‰ แˆจแˆฐแ‰ฅ. แŠฅแˆฑ แ‰ แŒฃแˆ แ‰ตแˆแ‰… แАแ‹แฃ แŠฅแŠ“ แˆ˜แŒ€แˆ˜แˆชแ‹ซ แˆ‹แ‹ญ แŠจแˆšแŠ–แˆฏแ‰ธแ‹ แŒฅแ‹ซแ‰„แ‹Žแ‰ฝ แ‹แˆตแŒฅ แŒฅแˆฉ แŠญแแˆ แŠ แˆตแ‰€แ‹ตแˆž แ‰ NGINX แˆ›แˆ…แ‰ แˆจแˆฐแ‰ฅ แ‰ฐแˆแ‰ตแ‰ทแˆแข

    Lua แŒˆแŠ•แ‰ขแ‹Žแ‰ฝ. แ‰ตแŠ“แŠ•แ‰ต แ‹ˆแ‹ฐ HighLoad++ แ‹จแˆฅแˆแŒ แŠ“ แ‰€แŠ• แŠจแˆ˜แŒกแ‰ต แˆฐแ‹Žแ‰ฝ แŒ‹แˆญ แ‰ฐแАแŒ‹แŒˆแˆญแŠฉ แŠฅแŠ“ แ‰ณแˆซแŠ•แ‰ถแˆ แ‰ แˆ‰แ‹‹ แ‰ฅแ‰ป แŠฅแŠ•แ‹ฐแ‰ฐแŒปแˆ แˆฐแˆ›แˆแข แ‹ญแˆ… แŠฅแ‹แАแ‰ต แŠ แ‹ญแ‹ฐแˆˆแˆแฃ แ‰ฅแ‹™ แАแŒˆแˆฎแ‰ฝ แ‰ แˆ‰แ‹‹ แ‰ฐแŒฝแˆแ‹‹แˆแข แˆแˆณแˆŒแ‹Žแ‰ฝแก OpenRestyแฃ Prosody XMPP แŠ แŒˆแˆแŒ‹แ‹ญแฃ Love2D แŒจแ‹‹แ‰ณ แˆžแ‰ฐแˆญแฃ แˆ‰แŠ  แ‰ แ‹‹แˆญแŠญแˆซแแ‰ต แŠฅแŠ“ แ‰ แˆŒแˆŽแ‰ฝ แ‰ฆแ‰ณแ‹Žแ‰ฝ แ‹จแ‰ฐแƒแˆแข แ‰ฅแ‹™ แ‹จแˆ‰แ‹‹ แŒˆแŠ•แ‰ขแ‹Žแ‰ฝ แŠ แˆ‰แฃ แ‰ตแˆแ‰… แŠฅแŠ“ แˆแˆ‹แˆฝ แˆฐแŒช แˆ›แˆ…แ‰ แˆจแˆฐแ‰ฅ แŠ แˆ‹แ‰ธแ‹แข แˆแˆ‰แˆ แ‹จแˆ‰แŠ  แŒฅแ‹ซแ‰„แ‹Žแ‰ผ แ‰ แŒฅแ‰‚แ‰ต แˆฐแ‹“แ‰ณแ‰ต แ‹แˆตแŒฅ แ‰ฐแˆแ‰ตแ‰ฐแ‹‹แˆแข แ‹ˆแ‹ฐ แ‹จแ‹ฐแ‰ฅแ‹ณแ‰ค แˆ˜แˆ‹แŠชแ‹ซ แ‹แˆญแ‹แˆญ แˆฒแŒฝแ‰แฃ แ‰ แŒฅแˆฌแ‹ แ‰ แŒฅแ‰‚แ‰ต แ‹ฐแ‰‚แ‰ƒแ‹Žแ‰ฝ แ‹แˆตแŒฅ แˆแŠ• แŠฅแŠ“ แŠฅแŠ•แ‹ดแ‰ตแฃ แˆแŠ• แŠฅแŠ•แ‹ฐแˆ†แА แ‹จแˆšแŒˆแˆแŒน แ‰ฅแ‹™ แˆแˆ‹แˆพแ‰ฝ แŠ แˆ‰แข แ‰ แŒฃแˆ แˆแˆญแŒฅ. แŠฅแŠ•แ‹ฐ แŠ แˆˆแˆ˜แ‰ณแ‹ฐแˆ แˆ†แŠ– แŠฅแŠ•แ‹ฒแˆ… แ‹“แ‹ญแАแ‰ฑ แ‹ฐแŒ แˆ˜แŠ•แˆแˆณแ‹Š แˆ›แˆ…แ‰ แˆจแˆฐแ‰ฅ แ‰ แˆแˆ‰แˆ แ‰ฆแ‰ณ แŠ แ‹ญแŒˆแŠแˆแข
    แ‹จแˆ†แА แАแŒˆแˆญ แŠจแ‰ฐแˆฐแ‰ แˆจ แ‰ฝแŒแˆญ แ‹จแˆšแŠจแแ‰ฑแ‰ แ‰ต GitHub แˆˆOpenResty แŠ แˆˆแข แ‰ แŒŽแŒแˆ แ‰กแ‹ตแŠ–แ‰ฝ แˆ‹แ‹ญ แ‹จแ‹ฐแ‰ฅแ‹ณแ‰ค แˆ˜แˆ‹แŠชแ‹ซ แ‹แˆญแ‹แˆญ แŠ แˆˆแฃ แŠ แŒ แ‰ƒแˆ‹แ‹ญ แŒ‰แ‹ณแ‹ฎแ‰ฝแŠ• แ‹จแˆแ‰ตแ‹ˆแ‹ซแ‹ญแ‰ แ‰ตแฃ แ‰ แ‰ปแ‹ญแŠ•แŠ› แ‹จแ‹ฐแ‰ฅแ‹ณแ‰ค แˆ˜แˆ‹แŠชแ‹ซ แ‹แˆญแ‹แˆญ แŠ แˆˆ - แ‰ แŒญแˆซแˆฝ แŠ แ‰ณแ‹แ‰…แˆแฃ แˆแŠ“แˆแ‰ฃแ‰ต แŠฅแŠ•แŒแˆŠแ‹แŠ› แŠ แ‰ตแŠ“แŒˆแˆญแˆแฃ แŒแŠ• แ‰ปแ‹ญแŠ•แŠ› แ‰ณแ‹แ‰ƒแˆˆแˆ…แข

แ‹แŒคแ‰ถแ‰ฝ

  • OpenResty แˆˆแ‹ตแˆญ แ‹จแ‰ฐแ‰ แŒ€ แ‰ แŒฃแˆ แˆแ‰น แˆ›แ‹•แ‰€แ แˆ˜แˆ†แŠ‘แŠ• แˆˆแˆ›แˆตแ‰ฐแˆ‹แˆˆแ แŠฅแŠ•แ‹ฐแ‰ปแˆแŠฉ แ‰ฐแˆตแ‹ แŠ แ‹ฐแˆญแŒ‹แˆˆแˆแข
  • แŠฎแ‹ฑ แŠจแˆแŠ•แŒฝแˆแ‹ แŒ‹แˆญ แ‰ฐแˆ˜แˆณแˆณแ‹ญ แˆตแˆˆแˆ†แА แ‹จแˆ˜แŒแ‰ฃแ‰ต แŠฅแŠ•แ‰…แ‹แ‰ต แŠ แАแˆตแ‰ฐแŠ› แАแ‹แฃ แ‰‹แŠ•แ‰‹แ‹ แ‰ แŒฃแˆ แ‰€แˆ‹แˆ แŠฅแŠ“ แ‹แ‰…แ‰ฐแŠ› แАแ‹แข
  • แ‹ซแˆแ‰ฐแˆ˜แˆณแˆฐแˆˆ I/O แ‹ซแˆˆ แˆ˜แˆแˆถ แŒฅแˆช แ‹ซแ‰€แˆญแ‰ฃแˆแฃ แŠ แŠ•แ‹ณแŠ•แ‹ต แŒŠแ‹œ แ‰  NodeJS แ‹แˆตแŒฅ แŠฅแŠ•แ‹ฐแˆแŠ•แŒฝแˆแ‹ แˆแŠ•แˆ แŠ แ‹ญแАแ‰ต แŠ‘แ‹ตแˆ แŠ แ‹ญแŠ–แˆจแŠ•แˆแข
  • แŠ แˆตแˆแˆ‹แŒŠแ‹ แˆžแŒแˆ แŠฅแŠ“ แ‹จแŠฅแŠ› แŠฎแ‹ต แ‹ซแˆˆแ‹ NGINX แ‰ฅแ‰ป แˆตแˆˆแˆšแ‹ซแˆตแˆแˆแŒˆแŠ• แ‰€แˆ‹แˆ แˆ›แˆฐแˆ›แˆซแ‰ต แŠ แˆˆแ‹, แŠฅแŠ“ แˆแˆ‰แˆ แАแŒˆแˆญ แ‹ˆแ‹ฒแ‹ซแ‹แŠ‘ แ‹ญแˆฐแˆซแˆ.
  • แ‰ตแˆแ‰… แŠฅแŠ“ แˆแˆ‹แˆฝ แˆฐแŒช แˆ›แˆ…แ‰ แˆจแˆฐแ‰ฅแข

แˆ›แ‹˜แ‹‹แ‹ˆแˆญ แŠฅแŠ•แ‹ดแ‰ต แŠฅแŠ•แ‹ฐแˆšแ‹ฐแˆจแŒ แ‰ แ‹แˆญแ‹แˆญ แŠ แˆแŒˆแˆˆแŒฝแŠฉแˆ แฃ แ‰ แŒฃแˆ แˆจแŒ…แˆ แ‰ณแˆชแŠญ แˆ†แŠ– แ‰ฐแŒˆแŠ˜แข

แˆˆแˆšแ‹ซแ‹ฐแˆญแŒ‰แ‰ต แŒฅแˆจแ‰ต แŠฅแŠ“แˆ˜แˆฐแŒแŠ“แˆˆแŠ•!

แ‰ชแ‹ฒแ‹ฎ แ‹ซแŒซแ‹แ‰ฑ

แ‰ญแˆ‹แ‹ตแˆšแˆญ แ•แˆฎแ‰ณแˆถแ‰ญ - OpenResty: NGINXแŠ• แ‹ˆแ‹ฐ แˆ™แˆ‰ แ‹จแˆ˜แ‰ฐแŒแ‰ แˆชแ‹ซ แŠ แŒˆแˆแŒ‹แ‹ญ แˆ˜แ‰€แ‹จแˆญ

แˆแŠ•แŒญ: hab.com

แŠ แˆตแ‰ฐแ‹ซแ‹จแ‰ต แ‹ซแŠญแˆ‰