OpenResty: เบ›เปˆเบฝเบ™ NGINX เปƒเบซเป‰เป€เบ›เบฑเบ™เป€เบŠเบตเบšเป€เบงเบตเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ—เบตเปˆเป€เบ•เบฑเบกเป„เบ›เบ”เป‰เบงเบเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”

OpenResty: เบ›เปˆเบฝเบ™ NGINX เปƒเบซเป‰เป€เบ›เบฑเบ™เป€เบŠเบตเบšเป€เบงเบตเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ—เบตเปˆเป€เบ•เบฑเบกเป„เบ›เบ”เป‰เบงเบเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เป€เบœเบตเบโ€‹เปเบœเปˆโ€‹เบšเบปเบ”โ€‹เบฅเบฒเบโ€‹เบ‡เบฒเบ™โ€‹เบšเบปเบ”โ€‹เบฅเบฒเบโ€‹เบ‡เบฒเบ™โ€‹เบˆเบฒเบโ€‹เบเบญเบ‡โ€‹เบ›เบฐโ€‹เบŠเบธเบก เป‚เบซเบผเบ”เบชเบนเบ‡ ++ 2016, เป€เบŠเบดเปˆเบ‡เป„เบ”เป‰เบˆเบฑเบ”เบ‚เบถเป‰เบ™เปƒเบ™ Skolkovo เปƒเบเป‰ Moscow เปƒเบ™เบงเบฑเบ™เบ—เบต 7-8 เบžเบฐเบˆเบดเบเบ›เบตเบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ. Vladimir Protasov เบšเบญเบเบงเบดเบ—เบตเบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡ NGINX เบเบฑเบš OpenResty เปเบฅเบฐ Lua.

เบชเบฐเบšเบฒเบเบ”เบตเบ—เบธเบเบ„เบปเบ™, เบ‚เป‰เบญเบเบŠเบทเปˆ Vladimir Protasov, เบ‚เป‰เบญเบเป€เบฎเบฑเบ”เบงเบฝเบ Parallels. เบ‚เป‰เบญเบเบˆเบฐเบšเบญเบเป€เบˆเบปเป‰เบฒเป€เบฅเบฑเบเบ™เป‰เบญเบเบเปˆเบฝเบงเบเบฑเบšเบ•เบปเบงเป€เบญเบ‡. เบ‚เป‰เบญเบเปƒเบŠเป‰เป€เบงเบฅเบฒเบชเบฒเบกเบชเปˆเบงเบ™เบชเบตเปˆเบ‚เบญเบ‡เบŠเบตเบงเบดเบ”เบ‚เบญเบ‡เบ‚เป‰เบญเบเบ‚เบฝเบ™เบฅเบฐเบซเบฑเบ”. เบ‚เป‰เบญเบเป„เบ”เป‰เบเบฒเบเป€เบ›เบฑเบ™เบ™เบฑเบเบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบกเป€เบ›เบฑเบ™เบซเบผเบฑเบเปƒเบ™เบ„เบงเบฒเบกเบซเบกเบฒเบเบ—เบตเปˆเบฎเบนเป‰เบซเบ™เบฑเบ‡เบชเบท: เบšเบฒเบ‡เบ„เบฑเป‰เบ‡เบ‚เป‰เบญเบเป€เบซเบฑเบ™เบฅเบฐเบซเบฑเบ”เปƒเบ™เบ„เบงเบฒเบกเบเบฑเบ™เบ‚เบญเบ‡เบ‚เป‰เบญเบ. เบซเบ™เบถเปˆเบ‡เปƒเบ™เบชเบตเปˆเบ‚เบญเบ‡เบŠเบตเบงเบดเบ”เปเบกเปˆเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบญเบธเบ”เบชเบฒเบซเบฐเบเปเบฒ, เบเบฒเบ™เบ‚เบฝเบ™เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบเบฒเบ™เบœเบฐเบฅเบดเบ”เป‚เบ”เบเบเบปเบ‡. เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบšเบฒเบ‡เบ—เปˆเบฒเบ™เปƒเบŠเป‰เปเบ•เปˆเบšเปเปˆเบฎเบนเป‰เบกเบฑเบ™.

เป€เบžเบทเปˆเบญเปเบˆเป‰เบ‡เปƒเบซเป‰เป€เบˆเบปเป‰เบฒเบฎเบนเป‰เบงเปˆเบฒเบกเบฑเบ™เบšเปเปˆเบ”เบตเบ›เบฒเบ™เปƒเบ”. เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป€เบ›เบฑเบ™ junior เบžเบฝเบ‡เป€เบฅเบฑเบเบ™เป‰เบญเบ, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เป€เบ‚เบปเป‰เบฒเบกเบฒเปเบฅเบฐเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเปƒเบซเป‰เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบ—เบฑเบ‡เบชเบญเบ‡เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™ terabyte. เบ”เบฝเบงเบ™เบตเป‰เบกเบฑเบ™เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰ เบชเบณ เบฅเบฑเบšเบ—เบธเบเบ„เบปเบ™เบ—เบตเปˆเบชเบนเบ‡. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เป„เบ›เบ›เบฐเบŠเบธเบกเปเบฅเบฐเบ–เบฒเบกเบงเปˆเบฒ: "เบ„เบปเบ™, เบšเบญเบเบ‚เป‰เบญเบ, เป€เบˆเบปเป‰เบฒเบกเบตเบ‚เปเป‰เบกเบนเบ™เปƒเบซเบเปˆ, เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เปเบกเปˆเบ™เป€เบขเบฑเบ™เบšเป? เป€เบˆเบปเป‰เบฒเบกเบตเบžเบทเป‰เบ™เบ–เบฒเบ™เป€เบ—เบปเปˆเบฒเปƒเบ”? เบžเบงเบเป€เบ‚เบปเบฒเบ•เบญเบšเบ‚เป‰เบญเบเบงเปˆเบฒ: "เบžเบงเบเป€เบฎเบปเบฒเบกเบต 100 gigabytes!" เบ‚เป‰เบญเบเป€เบงเบปเป‰เบฒเบงเปˆเบฒ: "เป€เบขเบฑเบ™, 100 gigabytes!" เปเบฅเบฐเบ‚เป‰เบญเบเบ„เบดเบ”เบเบฑเบšเบ•เบปเบงเป€เบญเบ‡เบงเปˆเบฒเป€เบฎเบฑเบ”เปเบ™เบงเปƒเบ”เป€เบžเบทเปˆเบญเบŠเปˆเบงเบเบ›เบฐเบขเบฑเบ”เปƒเบšเบซเบ™เป‰เบฒเป‚เบ›เปŠเบเป€เบเบตเบขเปˆเบฒเบ‡เบฅเบฐเบกเบฑเบ”เบฅเบฐเบงเบฑเบ‡. เบ—เปˆเบฒเบ™เบ„เบดเบ”เบงเปˆเบฒ, เปเบกเปˆเบ™เปเบฅเป‰เบง, guys เปเบกเปˆเบ™เป€เบขเบฑเบ™, เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบเบฑเบšเบ„เบทเบ™เป„เบ›เบšเปˆเบญเบ™เปเบฅเบฐ tinker เบเบฑเบšเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบซเบผเบฒเบ terabyte เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰. เปเบฅเบฐเบ™เบตเป‰เปเบกเปˆเบ™เบเบฒเบ™เป€เบ›เบฑเบ™ junior. เป€เบˆเบปเป‰เบฒเบชเบฒเบกเบฒเบ”เบˆเบดเบ™เบ•เบฐเบ™เบฒเบเบฒเบ™เป„เบ”เป‰เบงเปˆเบฒเบกเบฑเบ™เป€เบ›เบฑเบ™เบเบฒเบ™เบ•เบตเบซเบเบฑเบ‡?

เบ‚เป‰เบญเบเบฎเบนเป‰เบซเบผเบฒเบเบเบงเปˆเบฒ 20 เบžเบฒเบชเบฒเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบก. เบ™เบตเป‰เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบ‚เป‰เบญเบเบ•เป‰เบญเบ‡เบ„เบดเบ”เบญเบญเบเปƒเบ™เป„เบฅเบเบฐเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบ. เบžเบงเบเป€เบ‚เบปเบฒเปƒเบซเป‰เบ—เปˆเบฒเบ™เบฅเบฐเบซเบฑเบ”เปƒเบ™ Erlang, เปƒเบ™ C, เปƒเบ™ C ++, เปƒเบ™ Lua, เปƒเบ™ Python, เปƒเบ™ Ruby, เปƒเบ™เบชเบดเปˆเบ‡เบญเบทเปˆเบ™, เปเบฅเบฐเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบ•เบฑเบ”เบกเบฑเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”. เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบ•เป‰เบญเบ‡. เบกเบฑเบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เบ„เบดเบ”เป„เบฅเปˆเบ•เบปเบงเป€เบฅเบเบ—เบตเปˆเปเบ™เปˆเบ™เบญเบ™เป„เบ”เป‰, เปเบ•เปˆเบšเบฒเบ‡เบšเปˆเบญเบ™เบ›เบฐเบกเบฒเบ™ 20 เบ•เบปเบงเป€เบฅเบเป„เบ”เป‰เบชเบนเบ™เป€เบชเบเป„เบ›.

เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบ—เบธเบเบ„เบปเบ™เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰เบฎเบนเป‰เบงเปˆเบฒ Parallels เปเบกเปˆเบ™เบซเบเบฑเบ‡เปเบฅเบฐเบชเบดเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป€เบฎเบฑเบ”, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบˆเบฐเบšเปเปˆเป€เบงเบปเป‰เบฒเบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป€เบขเบฑเบ™เปเบฅเบฐเบชเบดเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป€เบฎเบฑเบ”. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบžเบฝเบ‡เปเบ•เปˆเบˆเบฐเบšเบญเบเบ—เปˆเบฒเบ™เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบกเบต 13 เบซเป‰เบญเบ‡เบเบฒเบ™เบ—เบปเปˆเบงเป‚เบฅเบ, เบซเบผเบฒเบเบเบงเปˆเบฒ 300 เบžเบฐเบ™เบฑเบเบ‡เบฒเบ™, เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปƒเบ™ Moscow, Tallinn เปเบฅเบฐ Malta. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบญเบปเบฒเปเบฅเบฐเบเป‰เบฒเบเป„เบ› Malta, เบ–เป‰เบฒเบกเบฑเบ™เป€เบขเบฑเบ™เปƒเบ™เบฅเบฐเบ”เบนเบซเบ™เบฒเบงเปเบฅเบฐเบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบญเบปเบšเบญเบธเปˆเบ™เบเบฑเบšเบ„เบทเบ™เป„เบ›เบšเปˆเบญเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™.

เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐ, เบžเบฐเปเบ™เบเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบ‚เบฝเบ™เปƒเบ™ Python 2. เบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบฅเบฑเบ‡เบขเบนเปˆเปƒเบ™เบ—เบธเบฅเบฐเบเบดเบ”เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบกเบตเป€เบงเบฅเบฒเบ—เบตเปˆเบˆเบฐเปเบ™เบฐเบ™เปเบฒเป€เบ—เบเป‚เบ™เป‚เบฅเบเบตเบ„เบปเบ™เบญเบฑเบšเป€เบ”เบ”:, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบ—เบปเบ™เบ—เบธเบ. เบžเบงเบเป€เบฎเบปเบฒเบกเบต Django, เป€เบžเบฒเบฐเบงเปˆเบฒเบกเบฑเบ™เบกเบตเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡, เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบญเบปเบฒเบชเปˆเบงเบ™เป€เบเบตเบ™เปเบฅเบฐเบ–เบดเป‰เบกเบกเบฑเบ™เป„เบ›. เบ™เบญเบเบˆเบฒเบเบ™เบตเป‰เบเบฑเบ‡ MySQL, Redis เปเบฅเบฐ NGINX. เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เบกเบตเบชเบดเปˆเบ‡เบ”เบตเป†เบญเบตเบเบซเบผเบฒเบเบขเปˆเบฒเบ‡. เบžเบงเบเป€เบฎเบปเบฒเบกเบต MongoDB, เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบเบฐเบ•เปˆเบฒเบเปเบฅเปˆเบ™เบญเป‰เบญเบก, เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบกเบตเบซเบเบฑเบ‡ - เปเบ•เปˆเบกเบฑเบ™เบšเปเปˆเปเบกเปˆเบ™เบ‚เบญเบ‡เบ‚เป‰เบญเบ, เปเบฅเบฐเบ‚เป‰เบญเบเบšเปเปˆเป€เบฎเบฑเบ”เบกเบฑเบ™.

OpenResty

เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบšเบญเบเบเปˆเบฝเบงเบเบฑเบšเบ•เบปเบ™เป€เบญเบ‡. เบกเบฒเป€เบšเบดเปˆเบ‡เบชเบดเปˆเบ‡เบ—เบตเปˆเบ‚เป‰เบญเบเบˆเบฐเป€เบงเบปเป‰เบฒเปƒเบ™เบกเบทเป‰เบ™เบตเป‰:

  • OpenResty เปเบกเปˆเบ™เบซเบเบฑเบ‡ เปเบฅเบฐเบกเบฑเบ™เบเบดเบ™เบเบฑเบšเบซเบเบฑเบ‡?
  • เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบเบฒเบ™เบ›เบฐเบ”เบดเบ”เบฅเปเป‰เป€เบกเบทเปˆเบญเบžเบงเบเป€เบฎเบปเบฒเบกเบต Python, NodeJS, PHP, Go เปเบฅเบฐเบชเบดเปˆเบ‡เบ”เบตเป†เบญเบทเปˆเบ™เป†เบ—เบตเปˆเบ—เบธเบเบ„เบปเบ™เบกเบตเบ„เบงเบฒเบกเบชเบธเบ?
  • เปเบฅเบฐเบšเบฒเบ‡เบ•เบปเบงเบขเปˆเบฒเบ‡เบŠเบตเบงเบดเบ”เบˆเบดเบ‡. เบ‚เป‰เบญเบเบ•เป‰เบญเบ‡เบ•เบฑเบ”เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™เบฅเบปเบ‡เบซเบผเบฒเบ, เป€เบžเบฒเบฐเบงเปˆเบฒเบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฑเบšเบกเบฑเบ™เป€เบ›เบฑเบ™เป€เบงเบฅเบฒ 3,5 เบŠเบปเปˆเบงเป‚เบกเบ‡, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบˆเบฐเบกเบตเบ•เบปเบงเบขเปˆเบฒเบ‡เบˆเปเบฒเบ™เบงเบ™เบซเบ™เป‰เบญเบ.

OpenResty เปเบกเปˆเบ™ NGINX. เบ‚เปเบ‚เบญเบšเปƒเบˆเบเบฑเบšเบฅเบฒเบง, เบžเบงเบเป€เบฎเบปเบฒเบกเบตเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเป€เบงเบฑเบšเป€เบ•เบฑเบกเบฎเบนเบšเปเบšเบš, เป€เบŠเบดเปˆเบ‡เบ‚เบฝเบ™เป„เบ”เป‰เบ”เบต, เบกเบฑเบ™เป€เบฎเบฑเบ”เบงเบฝเบเป„เบ”เป‰เป„เบง. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบ„เบดเบ”เบงเปˆเบฒเบชเปˆเบงเบ™เปƒเบซเบเปˆเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰ NGINX เปƒเบ™เบเบฒเบ™เบœเบฐเบฅเบดเบ”. เบ—เปˆเบฒเบ™เบ—เบธเบเบ„เบปเบ™เบฎเบนเป‰เบงเปˆเบฒเบฅเบฒเบงเปเบกเปˆเบ™เป„เบงเปเบฅเบฐเป€เบขเบฑเบ™. เบžเบงเบเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเป€เบฎเบฑเบ”เปƒเบซเป‰ I / O synchronous เป€เบขเบฑเบ™เปƒเบ™เบกเบฑเบ™, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบงเบปเบ‡เบˆเบญเบ™เบซเบเบฑเบ‡เปƒเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบ”เบฝเบงเบเบฑเบ™เบเบฑเบš gevent เป„เบ”เป‰ cycled เปƒเบ™ Python. Gevent เปเบกเปˆเบ™เป€เบขเบฑเบ™, เป€เบขเบฑเบ™, เปเบ•เปˆเบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ‚เบฝเบ™ C-code เปเบฅเบฐเบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบœเบดเบ”เบžเบฒเบ”เบเบฑเบš gevent, เบ—เปˆเบฒเบ™เบˆเบฐเป„เบ›เบ”เบตเบšเบฑเบเบกเบฑเบ™. เบ‚เป‰เบญเบเบกเบตเบ›เบฐเบชเบปเบšเบเบฒเบ™: เบกเบฑเบ™เปƒเบŠเป‰เป€เบงเบฅเบฒเบชเบญเบ‡เบกเบทเป‰เบ—เบฑเบ‡เบซเบกเบปเบ”เป€เบžเบทเปˆเบญเบ„เบปเป‰เบ™เบซเบฒเบชเบดเปˆเบ‡เบ—เบตเปˆเบœเบดเบ”เบžเบฒเบ”เบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™. เบ–เป‰เบฒเปƒเบœเบœเบนเป‰เบซเบ™เบถเปˆเบ‡เบšเปเปˆเป„เบ”เป‰เบ‚เบธเบ”เบชเปเบฒเบฅเบฑเบšเบชเบญเบ‡เบชเบฒเบกเบญเบฒเบ—เบดเบ”เบเปˆเบญเบ™, เบžเบปเบšเบšเบฑเบ™เบซเบฒ, เบ‚เบฝเบ™เบกเบฑเบ™เบขเบนเปˆเปƒเบ™เบญเบดเบ™เป€เบ•เบตเป€เบ™เบฑเบ”, เปเบฅเบฐ Google เบšเปเปˆเบžเบปเบšเบกเบฑเบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบšเป‰เบฒเบซเบกเบปเบ”.

NGINX เป€เบฎเบฑเบ”เบเบฒเบ™เป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เปเบฅเบฐเป€เบ™เบทเป‰เบญเบซเบฒเบ„เบปเบ‡เบ—เบตเปˆเปเบฅเป‰เบง. เบ—เปˆเบฒเบ™เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบเบฑเบ‡เบงเบปเบ™เบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™เป€เบฎเบฑเบ”เบกเบฑเบ™เบ‚เบญเบ‡เบกเบฐเบ™เบธเบ”, เป€เบžเบทเปˆเบญเบงเปˆเบฒเบ—เปˆเบฒเบ™เบˆเบฐเบšเปเปˆเบŠเป‰เบฒเบฅเบปเบ‡เบšเปˆเบญเบ™เปƒเบ”เบšเปˆเบญเบ™เบซเบ™เบถเปˆเบ‡, เป€เบžเบทเปˆเบญเบงเปˆเบฒเบ—เปˆเบฒเบ™เบˆเบฐเบšเปเปˆเบชเบนเบ™เป€เบชเบเบเบฒเบ™เบญเบฐเบ—เบดเบšเบฒเบเบšเบฒเบ‡เบšเปˆเบญเบ™. Nginx เปเบกเปˆเบ™เบชเบฐเบ”เบงเบเบซเบผเบฒเบเบ—เบตเปˆเบˆเบฐเบ™เปเบฒเปƒเบŠเป‰, เบ—เปˆเบฒเบ™เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ„เบดเบ”เบเปˆเบฝเบงเบเบฑเบšเบชเบดเปˆเบ‡เบ—เบตเปˆเบˆเบฐเป€เบญเบปเบฒ - WSGI, PHP-FPM, Gunicorn, Unicorn. Nginx เบ–เบทเบเบ•เบดเบ”เบ•เบฑเป‰เบ‡, เบกเบญเบšเปƒเบซเป‰เบœเบนเป‰เบšเปเบฅเบดเบซเบฒเบ™, เบžเบงเบเป€เบ‚เบปเบฒเบฎเบนเป‰เบงเบดเบ—เบตเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบกเบฑเบ™. Nginx เบˆเบฑเบ”เบเบฒเบ™เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเปƒเบ™เบฎเบนเบšเปเบšเบšเบ—เบตเปˆเบกเบตเป‚เบ„เบ‡เบชเป‰เบฒเบ‡. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบˆเบฐเป€เบงเบปเป‰เบฒเบเปˆเบฝเบงเบเบฑเบšเป€เบฅเบทเปˆเบญเบ‡เบ™เบตเป‰เป€เบฅเบฑเบเบ™เป‰เบญเบเบ•เปเปˆเบกเบฒ. เปƒเบ™เบชเบฑเป‰เบ™, เบฅเบฒเบงเบกเบตเป„เบฅเบเบฐเบ—เบตเปˆเบฅเบฒเบงเบžเบฝเบ‡เปเบ•เปˆเบเบญเบกเบฎเบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เป, เป€เบกเบทเปˆเบญเบฅเบฒเบงเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เปเบฅเบฐเป€เบกเบทเปˆเบญเบฅเบฒเบงเปƒเบซเป‰เป€เบ™เบทเป‰เบญเบซเบฒเบเบฑเบšเบœเบนเป‰เปƒเบŠเป‰.

Nginx เปเบกเปˆเบ™เป€เบขเบฑเบ™, เปเบ•เปˆเบกเบตเบšเบฑเบ™เบซเบฒเบซเบ™เบถเปˆเบ‡: เบกเบฑเบ™เบšเปเปˆเบกเบตเบ„เบงเบฒเบกเบเบทเบ”เบซเบเบธเปˆเบ™เบžเบฝเบ‡เบžเปเป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบกเบตเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เป€เบขเบฑเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆ guys pushed เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ config, เป€เบ–เบดเบ‡เบงเปˆเบฒเบˆเบฐเบกเบตเบ„เบงเบฒเบกเบˆเบดเบ‡เบ—เบตเปˆเบงเปˆเบฒเบกเบฑเบ™เบชเบฒเบกเบฒเบ”เบ›เบฑเบšเปเบ•เปˆเบ‡เป„เบ”เป‰. เบžเบฐเบฅเบฑเบ‡เบ‡เบฒเบ™เบ™เบตเป‰เบšเปเปˆเบžเบฝเบ‡เบžเป. เป€เบžเบฒเบฐเบชเบฐเบ™เบฑเป‰เบ™, เบœเบนเป‰เบŠเบฒเบเบˆเบฒเบ Taobao เปƒเบ™เป€เบงเบฅเบฒเบซเบ™เบถเปˆเบ‡, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบ„เบดเบ”เบงเปˆเบฒเบ›เบฐเบกเบฒเบ™เปเบ›เบ”เบ›เบตเบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰, เบชเป‰เบฒเบ‡ Lua เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบกเบฑเบ™. เบฅเบฒเบงเปƒเบซเป‰เบซเบเบฑเบ‡?

  • เบ‚เบฐเบซเบ™เบฒเบ”. เบกเบฑเบ™เบกเบตเบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบ. LuaJIT เปƒเบซเป‰เบšเบฒเบ‡เบšเปˆเบญเบ™เบ›เบฐเบกเบฒเบ™ 100-200 เบเบดเป‚เบฅเป„เบšเบ‚เบญเบ‡เปœเปˆเบงเบเบ„เบงเบฒเบกเบˆเบณเป€เบ—เบดเบ‡เบซเบปเบง เปเบฅเบฐ เบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ•เปเปˆเบฒเบชเบธเบ”.
  • เบ„เบงเบฒเบกเป„เบง. เบ™เบฒเบเบžเบฒเบชเบฒ LuaJIT เบขเบนเปˆเปƒเบเป‰เบเบฑเบš C เปƒเบ™เบซเบผเบฒเบเบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™, เปƒเบ™เบšเบฒเบ‡เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบกเบฑเบ™เบชเบนเบ™เป€เบชเบเป„เบ› Java, เปƒเบ™เบšเบฒเบ‡เบกเบฑเบ™ overtakes เบกเบฑเบ™. เบชเปเบฒเบฅเบฑเบšเปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆ, เบกเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบ‚เบญเบ‡เบฅเบฑเบ”เบ‚เบญเบ‡เบชเบดเบ™เบฅเบฐเบ›เบฐ, เบเบฒเบ™เบฅเบงเบšเบฅเบงเบก JIT เบ—เบตเปˆเป€เบขเบฑเบ™เบ—เบตเปˆเบชเบธเบ”. เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบกเบตเป€เบ„เบทเปˆเบญเบ‡เป€เบขเบฑเบ™เบเบงเปˆเบฒ, เปเบ•เปˆเบžเบงเบเบกเบฑเบ™เบซเบ™เบฑเบเบซเบผเบฒเบ, เบ•เบปเบงเบขเปˆเบฒเบ‡, V8 เบ”เบฝเบงเบเบฑเบ™. เบšเบฒเบ‡เบ•เบปเบงเปเบ›เบžเบฒเบชเบฒ JS เปเบฅเบฐ Java HotSpot เปเบกเปˆเบ™เป„เบงเบ‚เบถเป‰เบ™เปƒเบ™เบšเบฒเบ‡เบˆเบธเบ”, เปเบ•เปˆเบเบฑเบ‡เบชเบนเบ™เป€เบชเบเปƒเบ™เบšเบฒเบ‡เบˆเบธเบ”.
  • เบ‡เปˆเบฒเบเบ—เบตเปˆเบˆเบฐเบฎเบฝเบ™เบฎเบนเป‰. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบกเบต, เป€เบงเบปเป‰เบฒเบงเปˆเบฒ, เป€เบ›เบฑเบ™เบฅเบฐเบซเบฑเบ” Perl เปเบฅเบฐเบ—เปˆเบฒเบ™เบšเปเปˆเป„เบ”เป‰เบˆเบญเบ‡, เบ—เปˆเบฒเบ™เบˆเบฐเบšเปเปˆเบžเบปเบšเบ™เบฑเบเบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบก Perl. เบเป‰เบญเบ™โ€‹เบงเปˆเบฒโ€‹เป€เบ‚เบปเบฒโ€‹เป€เบˆเบปเป‰เบฒโ€‹เบšเปเปˆโ€‹เบขเบนเปˆโ€‹เบ—เบตเปˆโ€‹เบ™เบฑเป‰เบ™, เบžเบงเบโ€‹เป€เบ‚เบปเบฒโ€‹เป€เบˆเบปเป‰เบฒโ€‹เป„เบ”เป‰โ€‹เบ–เบทเบโ€‹เป€เบญเบปเบฒโ€‹เป„เบ›โ€‹เปเบปเบ”, เปเบฅเบฐโ€‹เบกเบฑเบ™โ€‹เบเบฒเบงโ€‹เบ™เบฒเบ™ เปเบฅเบฐโ€‹เบเบฒเบโ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เบชเบญเบ™โ€‹เป€เบ‚เบปเบฒโ€‹เป€เบˆเบปเป‰เบฒ. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เปƒเบซเป‰เบ™เบฑเบเบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบกเบชเปเบฒเบฅเบฑเบšเบชเบดเปˆเบ‡เบญเบทเปˆเบ™, เบžเบงเบเป€เบ‚เบปเบฒเบญเบฒเบ”เบˆเบฐเบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบเบถเบเบญเบปเบšเบฎเบปเบกเบซเบผเบทเบŠเบญเบเบซเบฒ. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡ Lua, เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เปเบกเปˆเบ™เบ‡เปˆเบฒเบเบ”เบฒเบ. Lua เบชเบฒเบกเบฒเบ”เบฎเบฝเบ™เป„เบ”เป‰เป‚เบ”เบ junior เปƒเบ”เปƒเบ™เบชเบฒเบกเบกเบทเป‰. เบกเบฑเบ™เปƒเบŠเป‰เป€เบงเบฅเบฒเบ‚เป‰เบญเบเบ›เบฐเบกเบฒเบ™เบชเบญเบ‡เบŠเบปเปˆเบงเป‚เบกเบ‡เป€เบžเบทเปˆเบญเบ„เบดเบ”เบกเบฑเบ™เบญเบญเบ. เบชเบญเบ‡เบŠเบปเปˆเบงเป‚เบกเบ‡เบ•เปเปˆเบกเบฒ, เบ‚เป‰เบญเบเป„เบ”เป‰เบ‚เบฝเบ™เบฅเบฐเบซเบฑเบ”เปƒเบ™เบเบฒเบ™เบœเบฐเบฅเบดเบ”เปเบฅเป‰เบง. เบ›เบฐเบกเบฒเบ™เบซเบ™เบถเปˆเบ‡เบญเบฒเบ—เบดเบ”เบ•เปเปˆเบกเบฒ, เบฅเบฒเบงเป„เบ”เป‰เป„เบ›เบซเบฒเบเบฒเบ™เบœเบฐเบฅเบดเบ”เปเบฅเบฐเบญเบญเบเป„เบ›.

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบกเบฑเบ™เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒ:

OpenResty: เบ›เปˆเบฝเบ™ NGINX เปƒเบซเป‰เป€เบ›เบฑเบ™เป€เบŠเบตเบšเป€เบงเบตเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ—เบตเปˆเป€เบ•เบฑเบกเป„เบ›เบ”เป‰เบงเบเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”

เบกเบตเบซเบผเบฒเบเบญเบฑเบ™เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰. OpenResty เป„เบ”เป‰เบ›เบฐเบเบญเบšเบซเบผเบฒเบเป‚เบกเบ”เบนเบ™, เบ—เบฑเบ‡ lush เปเบฅเบฐ engins. เปเบฅเบฐเบ—เปˆเบฒเบ™เบกเบตเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบเบฝเบกเบžเป‰เบญเบก - deployed เปเบฅเบฐเป€เบฎเบฑเบ”เบงเบฝเบ.

เบ•เบปเบงเบขเปˆเบฒเบ‡

เบžเบฝเบ‡โ€‹เบžเปโ€‹เบ‚เบญเบ‡โ€‹เป€เบ™เบทเป‰เบญโ€‹เป€เบžเบ‡โ€‹, เปƒเบซเป‰โ€‹เป€เบฎเบปเบฒโ€‹เป„เบ›โ€‹เบซเบฒโ€‹เบฅเบฐโ€‹เบซเบฑเบ”โ€‹. เบ™เบตเป‰เปเบกเปˆเบ™เบชเบฐเบšเบฒเบเบ”เบตเป‚เบฅเบเป€เบฅเบฑเบเบ™เป‰เบญเบ:

OpenResty: เบ›เปˆเบฝเบ™ NGINX เปƒเบซเป‰เป€เบ›เบฑเบ™เป€เบŠเบตเบšเป€เบงเบตเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ—เบตเปˆเป€เบ•เบฑเบกเป„เบ›เบ”เป‰เบงเบเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”

เปเบกเปˆเบ™เบซเบเบฑเบ‡? เบ™เบตเป‰เปเบกเปˆเบ™เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบ. เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบเบฑเบ‡เบงเบปเบ™, เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเป„เบ”เป‰เบ‚เบฝเบ™เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป€เบญเบ‡, เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเป€เบญเบปเบฒเบšเบฒเบ‡เบญเบฑเบ™เบ—เบตเปˆเบเบฝเบกเบžเป‰เบญเบก - เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบขเบนเปˆเปƒเบ™ NGINX เปเบฅเป‰เบง, เบžเบงเบเป€เบฎเบปเบฒเบ”เปเบฒเบฅเบปเบ‡เบŠเบตเบงเบดเบ”เป„เบ”เป‰เบ”เบตเปเบฅเบฐเบ‚เบตเป‰เบเบฝเบ”.

content_by_lua_block เปเบกเปˆเบ™เบšเบฅเบฑเบญเบเบ—เบตเปˆเบšเบญเบเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เป€เบ™เบทเป‰เบญเบซเบฒเป‚เบ”เบเปƒเบŠเป‰เบ•เบปเบงเบญเบฑเบเบชเบญเบ™ Lua. เบžเบงเบเป€เบฎเบปเบฒเป€เบญเบปเบฒเบ•เบปเบงเปเบ› engins remote_addr เปเบฅเบฐเบซเบผเบธเบ”เบกเบฑเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ string.format. เบ™เบตเป‰เปเบกเปˆเบ™เบ„เบทเบเบฑเบ™เบเบฑเบš sprintf, เบžเบฝเบ‡เปเบ•เปˆเบขเบนเปˆเปƒเบ™ Lua, เบ–เบทเบเบ•เป‰เบญเบ‡เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™. เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเปƒเบซเป‰เบกเบฑเบ™เบเบฑเบšเบฅเบนเบเบ„เป‰เบฒ.

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบกเบฑเบ™เบˆเบฐเบกเบตเบฅเบฑเบเบชเบฐเบ™เบฐเบ™เบตเป‰:

OpenResty: เบ›เปˆเบฝเบ™ NGINX เปƒเบซเป‰เป€เบ›เบฑเบ™เป€เบŠเบตเบšเป€เบงเบตเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ—เบตเปˆเป€เบ•เบฑเบกเป„เบ›เบ”เป‰เบงเบเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”

เปเบ•เปˆเบเบฑเบšเบ„เบทเบ™เบชเบนเปˆเป‚เบฅเบเบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡. เปƒเบ™เบเบฒเบ™เบœเบฐเบฅเบดเบ”, เบšเปเปˆเบกเบตเปƒเบœเปƒเบŠเป‰ Hello World. เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบกเบฑเบเบˆเบฐเป„เบ›เบซเบฒเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบซเบผเบทเบšเปˆเบญเบ™เบญเบทเปˆเบ™เปเบฅเบฐเป€เบงเบฅเบฒเบชเปˆเบงเบ™เปƒเบซเบเปˆเบฅเปเบ–เป‰เบฒเบเบฒเบ™เบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡.

OpenResty: เบ›เปˆเบฝเบ™ NGINX เปƒเบซเป‰เป€เบ›เบฑเบ™เป€เบŠเบตเบšเป€เบงเบตเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ—เบตเปˆเป€เบ•เบฑเบกเป„เบ›เบ”เป‰เบงเบเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”

เบžเบฝเบ‡เปเบ•เปˆเบ™เบฑเปˆเบ‡เปเบฅเบฐเบฅเปเบ–เป‰เบฒ. เบกเบฑเบ™เบšเปเปˆเบ”เบตเบซเบผเบฒเบ. เป€เบกเบทเปˆเบญเบœเบนเป‰เปƒเบŠเป‰ 100.000 เบ„เบปเบ™เบกเบฒ, เบกเบฑเบ™เบเบฒเบเบซเบผเบฒเบเบชเปเบฒเบฅเบฑเบšเบžเบงเบเป€เบฎเบปเบฒ. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เปƒเบซเป‰เปƒเบŠเป‰เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ‡เปˆเบฒเบเป†เป€เบ›เบฑเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡. เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบŠเบญเบเบซเบฒเบฎเบนเบšเบžเบฒเบš, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบปเบเบ•เบปเบงเบขเปˆเบฒเบ‡, เปเบกเบง. เบžเบฝเบ‡เปเบ•เปˆเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบšเปเปˆเบžเบฝเบ‡เปเบ•เปˆเบ„เบปเป‰เบ™เบซเบฒ, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ‚เบฐเบซเบเบฒเบเบ„เปเบฒเบซเบฅเบฑเบเปเบฅเบฐเบ–เป‰เบฒเบœเบนเป‰เปƒเบŠเป‰เบ„เบปเป‰เบ™เบซเบฒ "kittens", เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบŠเบญเบเบซเบฒเปเบกเบง, fluffies, เปเบฅเบฐเบญเบทเปˆเบ™เป†. เบเปˆเบญเบ™เบญเบทเปˆเบ™ เปเบปเบ”, เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบญเบปเบฒเบ‚เปเป‰เบกเบนเบ™เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบขเบนเปˆเปƒเบ™ 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, เบฅเบฐเบšเบธเบšเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐ cache, เบงเบดเบ—เบตเบเบฒเบ™เป€เบฎเบฑเบ”เบกเบฑเบ™, เปเบฅเบฐเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เป€เบฎเบฑเบ”เบงเบฝเบเบชเปเบฒเบฅเบฑเบšเบžเบงเบเป€เบฎเบปเบฒ.

เปเบ•เปˆเบ™เบตเป‰เบšเปเปˆเบžเบฝเบ‡เบžเป, เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เบ•เป‰เบญเบ‡เบเบฒเบ™เปƒเบซเป‰เบ‚เปเป‰เบกเบนเบ™เบเบฑเบšเบœเบนเป‰เปƒเบŠเป‰. เบ„เบงเบฒเบกเบ„เบดเบ”เบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเบ—เบตเปˆเบชเบธเบ”เปเบกเปˆเบ™เป€เบžเบทเปˆเบญ serialize เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เป€เบ›เบฑเบ™ JSON, เบ‡เปˆเบฒเบเบ”เบฒเบ, เปƒเบ™เบชเบญเบ‡เปเบ–เบง. เบžเบงเบเป€เบฎเบปเบฒเปƒเบซเป‰ Content-Type, เบžเบงเบเป€เบฎเบปเบฒเปƒเบซเป‰ JSON.

เปเบ•เปˆเบกเบตเบ„เบงเบฒเบกเบซเบเบธเป‰เบ‡เบเบฒเบเบญเบฑเบ™เบซเบ™เบถเปˆเบ‡: เบœเบนเป‰เปƒเบŠเป‰เบšเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบญเปˆเบฒเบ™ JSON. เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบ”เบถเบ‡เบ”เบนเบ”เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบ”เป‰เบฒเบ™เบซเบ™เป‰เบฒ. เบšเบฒเบ‡เบ„เบฑเป‰เบ‡เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบฎเบนเป‰เบชเบถเบเบขเบฒเบเป€เบฎเบฑเบ”เบกเบฑเบ™เปƒเบ™เบ•เบญเบ™เบ—เปเบฒเบญเบดเบ”. เปเบกเปˆเบ™เปเบฅเป‰เบง, เปเบฅเบฐเบœเบนเป‰เบŠเปˆเบฝเบงเบŠเบฒเบ™เบ”เป‰เบฒเบ™ SEO เบˆเบฐเป€เบงเบปเป‰เบฒเบงเปˆเบฒเบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบฅเบฑเบ‡เบŠเบญเบเบซเบฒเบฎเบนเบšเบžเบฒเบš, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบžเบงเบเป€เบ‚เบปเบฒเบšเปเปˆเบชเบปเบ™เปƒเบˆ. เปเบฅเบฐเบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเปƒเบซเป‰เบžเบงเบเป€เบ‚เบปเบฒเป€เบ™เบทเป‰เบญเบซเบฒเบšเบฒเบ‡เบขเปˆเบฒเบ‡, เบžเบงเบเป€เบ‚เบปเบฒเบˆเบฐเป€เบงเบปเป‰เบฒเบงเปˆเบฒเป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบเบŠเบญเบเบซเบฒเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเป„เบ”เป‰เบ”เบฑเบ”เบชเบฐเบ™เบตเบซเบเบฑเบ‡.

เบˆเบฐเป€เบฎเบฑเบ”เปเบ™เบงเปƒเบ”เบเบฑเบšเบกเบฑเบ™? เปเบ™เปˆเบ™เบญเบ™, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเปƒเบซเป‰เบœเบนเป‰เปƒเบŠเป‰ HTML. เบเบฒเบ™เบœเบฐเบฅเบดเบ”เบ”เป‰เบงเบเบกเบทเบˆเบฑเบšเบšเปเปˆเปเบกเปˆเบ™เป€เบฅเบทเปˆเบญเบ‡เบ—เบตเปˆเบœเบดเบ”เบžเบฒเบ”, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เปƒเบŠเป‰เปเบกเปˆเปเบšเบš. เบกเบตเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เบตเป‰ lua-resty-template.

OpenResty: เบ›เปˆเบฝเบ™ NGINX เปƒเบซเป‰เป€เบ›เบฑเบ™เป€เบŠเบตเบšเป€เบงเบตเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ—เบตเปˆเป€เบ•เบฑเบกเป„เบ›เบ”เป‰เบงเบเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”

เป€เบˆเบปเป‰เบฒเบ•เป‰เบญเบ‡เป„เบ”เป‰เป€เบซเบฑเบ™เบชเบฒเบกเบ•เบปเบงเบญเบฑเบเบชเบญเบ™เบ—เบตเปˆเบขเป‰เบฒเบ™ OPM. OpenResty เบกเบฒเบžเป‰เบญเบกเบเบฑเบšเบœเบนเป‰เบˆเบฑเบ”เบเบฒเบ™เบŠเบธเบ”เบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡, เป‚เบ”เบเบœเปˆเบฒเบ™เบ—เบตเปˆเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ•เบดเบ”เบ•เบฑเป‰เบ‡เป‚เบกเบ”เบนเบ™เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™, เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐ, lua-resty-template. เบกเบฑเบ™เป€เบ›เบฑเบ™เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบเปเบกเปˆเปเบšเบšเบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบเบฑเบšเปเบกเปˆเปเบšเบš Django. เบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ‚เบฝเบ™เบฅเบฐเบซเบฑเบ”เปเบฅเบฐเบ›เปˆเบฝเบ™เบ•เบปเบงเปเบ›เป„เบ”เป‰.

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบˆเบฐเบกเบตเบฅเบฑเบเบชเบฐเบ™เบฐเบ„เป‰เบฒเบเบ„เบทเบ™เบตเป‰:

OpenResty: เบ›เปˆเบฝเบ™ NGINX เปƒเบซเป‰เป€เบ›เบฑเบ™เป€เบŠเบตเบšเป€เบงเบตเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ—เบตเปˆเป€เบ•เบฑเบกเป„เบ›เบ”เป‰เบงเบเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”

เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบญเบปเบฒเบ‚เปเป‰เบกเบนเบ™เปเบฅเบฐเบชเบฐเปเบ”เบ‡เปเบกเปˆเปเบšเบšเบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡เปƒเบ™เบชเบญเบ‡เปเบ–เบง. เบœเบนเป‰เปƒเบŠเป‰เบกเบตเบ„เบงเบฒเบกเบชเบธเบ, เป„เบ”เป‰เปเบกเบง. เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบžเบงเบเป€เบฎเบปเบฒเบ‚เบฐเบซเบเบฒเบเบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เป, เบฅเบฒเบงเบเบฑเบ‡เป„เบ”เป‰เบฎเบฑเบšเบ›เบฐเบ—เบฑเบšเบ•เบฒเบ‚เบปเบ™เบชเปเบฒเบฅเบฑเบš kittens. เป€เบˆเบปเป‰เบฒเบšเปเปˆเป€เบ„เบตเบเบฎเบนเป‰, เบšเบฒเบ‡เบ—เบตเบฅเบฒเบงเบเปเบฒเบฅเบฑเบ‡เบŠเบญเบเบซเบฒเบกเบฑเบ™, เปเบ•เปˆเบฅเบฒเบงเบšเปเปˆเบชเบฒเบกเบฒเบ”เบชเป‰เบฒเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ‚เบญเบ‡เบฅเบฒเบงเป„เบ”เป‰เบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡.

เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เปเบกเปˆเบ™เป€เบขเบฑเบ™, เปเบ•เปˆเบžเบงเบเป€เบฎเบปเบฒเบขเบนเปˆเปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ, เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบœเบนเป‰เปƒเบŠเป‰เป€เบ—เบทเปˆเบญ. เปƒเบซเป‰เป€เบฎเบฑเบ”เบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”. เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, เปƒเบซเป‰เป€เบšเบดเปˆเบ‡เบงเปˆเบฒ NGINX เบˆเบฑเบ”เบเบฒเบ™เบเบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเปเบ™เบงเปƒเบ”เปƒเบ™เปเบ‡เปˆเบ‚เบญเบ‡ OpenResty:

  • เป„เบฅโ€‹เบเบฐโ€‹เบ—เปเบฒโ€‹เบญเบดเบ” - เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡, เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบœเบนเป‰เปƒเบŠเป‰เบžเบฝเบ‡เปเบ•เปˆเบกเบฒ, เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเป€เบšเบดเปˆเบ‡เป€เบ‚เบปเบฒเป‚เบ”เบ headers, เป‚เบ”เบเบ—เบตเปˆเบขเบนเปˆ IP, เป‚เบ”เบเบ‚เปเป‰เบกเบนเบ™เบญเบทเปˆเบ™เป†. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ•เบฑเบ”เบกเบฑเบ™เบ—เบฑเบ™เบ—เบตเบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบกเบฑเบเบกเบฑเบ™. เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”, เบซเบผเบทเบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบซเบผเบฒเบ, เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบ•เบฑเบ”เปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบขเปˆเบฒเบ‡เบ‡เปˆเบฒเบเบ”เบฒเบเปƒเบ™เป„เบฅเบเบฐเบ™เบตเป‰.
  • เบ‚เบฝเบ™เบ„เบทเบ™เปƒเบซเบกเปˆ. เบเบณเบฅเบฑเบ‡เบ‚เบฝเบ™เบ‚เปเป‰เบกเบนเบ™เบ„เบณเบฎเป‰เบญเบ‡เบ‚เปเบ„เบทเบ™เปƒเปเปˆ.
  • เป€เบ™เบทเป‰เบญเปƒเบ™. เบžเบงเบเป€เบฎเบปเบฒเปƒเบซเป‰เป€เบ™เบทเป‰เบญเบซเบฒเบเบฑเบšเบœเบนเป‰เปƒเบŠเป‰.
  • เบ•เบปเบงเบเบญเบ‡เบซเบปเบง. เบ›เปˆเบฝเบ™เบชเปˆเบงเบ™เบซเบปเบงเบ„เบณเบ•เบญเบš. เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰ proxy_pass, เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบ‚เบฝเบ™เบ„เบทเบ™เบšเบฒเบ‡เบชเปˆเบงเบ™เบซเบปเบงเบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบกเบญเบšเปƒเบซเป‰เบœเบนเป‰เปƒเบŠเป‰.
  • เบเบฒเบ™เบเบฑเปˆเบ™เบ•เบญเบ‡เบฎเปˆเบฒเบ‡เบเบฒเบ. เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบ›เปˆเบฝเบ™เบฎเปˆเบฒเบ‡เบเบฒเบเป„เบ”เป‰.
  • log - เบเบฒเบ™เบ•เบฑเบ”เป„เบกเป‰. เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบ‚เบฝเบ™เบšเบฑเบ™เบ—เบถเบเปƒเบ™ elasticsearch เป‚เบ”เบเบšเปเปˆเบกเบตเบŠเบฑเป‰เบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบก.

เบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบกเบตเบฅเบฑเบเบชเบฐเบ™เบฐเบ”เบฑเปˆเบ‡เบ™เบตเป‰:

OpenResty: เบ›เปˆเบฝเบ™ NGINX เปƒเบซเป‰เป€เบ›เบฑเบ™เป€เบŠเบตเบšเป€เบงเบตเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ—เบตเปˆเป€เบ•เบฑเบกเป„เบ›เบ”เป‰เบงเบเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”

เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบžเบตเปˆเบกเบกเบฑเบ™เปƒเบชเปˆเบ™เบฑเป‰เบ™ location, เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบญเบฐเบ—เบดเบšเบฒเบเบเปˆเบญเบ™, เปเบฅเบฐเปƒเบชเปˆเบฅเบฐเบซเบฑเบ”เบ•เปเปˆเป„เบ›เบ™เบตเป‰เบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™:

OpenResty: เบ›เปˆเบฝเบ™ NGINX เปƒเบซเป‰เป€เบ›เบฑเบ™เป€เบŠเบตเบšเป€เบงเบตเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ—เบตเปˆเป€เบ•เบฑเบกเป„เบ›เบ”เป‰เบงเบเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”

เบžเบงเบเป€เบฎเบปเบฒเป€เบšเบดเปˆเบ‡เป€เบžเบทเปˆเบญเป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบกเบต token เบ„เบธเบเบเบต. เบ–เป‰เบฒเบšเปเปˆ, เบžเบงเบเป€เบฎเบปเบฒเบ–เบดเป‰เบกเบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”. เบœเบนเป‰เปƒเบŠเป‰เบกเบตเบชเบฐเบ•เบดเบ›เบฑเบ™เบเบฒเปเบฅเบฐเบญเบฒเบ”เบˆเบฐเบ„เบฒเบ”เป€เบ”เบปเบฒเบงเปˆเบฒ token เบ„เบธเบเบเบตเบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ•เบฑเป‰เบ‡. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เบˆเบฐเป€เบญเบปเบฒเปƒเบชเปˆเปƒเบ™ Redis:

OpenResty: เบ›เปˆเบฝเบ™ NGINX เปƒเบซเป‰เป€เบ›เบฑเบ™เป€เบŠเบตเบšเป€เบงเบตเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ—เบตเปˆเป€เบ•เบฑเบกเป„เบ›เบ”เป‰เบงเบเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”

เบฅเบฐเบซเบฑเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš Redis เปเบกเปˆเบ™เบ‡เปˆเบฒเบเบ”เบฒเบเบซเบผเบฒเบเปเบฅเบฐเบšเปเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบˆเบฒเบเบžเบฒเบชเบฒเบญเบทเปˆเบ™เป†. เปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™, เบ—เบฑเบ‡เบซเบกเบปเบ” input / output, เบชเบดเปˆเบ‡เบ—เบตเปˆเบกเบต, เบชเบดเปˆเบ‡เบ—เบตเปˆเบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰, เบกเบฑเบ™เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบชเบฐเบเบฑเบ”. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ‚เบฝเบ™เบฅเบฐเบซเบฑเบ” synchronous, เบกเบฑเบ™เบˆเบฐเป€เบฎเบฑเบ”เบงเบฝเบ asynchronously. เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบš gevent, เบžเบฝเบ‡เปเบ•เปˆเป€เบฎเบฑเบ”เป„เบ”เป‰เบ”เบต.

OpenResty: เบ›เปˆเบฝเบ™ NGINX เปƒเบซเป‰เป€เบ›เบฑเบ™เป€เบŠเบตเบšเป€เบงเบตเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ—เบตเปˆเป€เบ•เบฑเบกเป„เบ›เบ”เป‰เบงเบเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”

เปƒเบซเป‰เป€เบฎเบฑเบ”เบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”เบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡:

OpenResty: เบ›เปˆเบฝเบ™ NGINX เปƒเบซเป‰เป€เบ›เบฑเบ™เป€เบŠเบตเบšเป€เบงเบตเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ—เบตเปˆเป€เบ•เบฑเบกเป„เบ›เบ”เป‰เบงเบเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”

เบžเบงเบเป€เบฎเบปเบฒเป€เบงเบปเป‰เบฒเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบญเปˆเบฒเบ™เป€เบ™เบทเป‰เบญเปƒเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เป. เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡ POST, เบเบงเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเป€เบ‚เบปเป‰เบฒเบชเบนเปˆเบฅเบฐเบšเบปเบšเปเบฅเบฐเบฅเบฐเบซเบฑเบ”เบœเปˆเบฒเบ™เบ–เบทเบเบ•เป‰เบญเบ‡. เบ–เป‰เบฒเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡, เบžเบงเบเป€เบฎเบปเบฒเบ–เบดเป‰เบกเบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”. เปเบฅเบฐเบ–เป‰เบฒเบžเบงเบเป€เบ‚เบปเบฒเบ–เบทเบเบ•เป‰เบญเบ‡, เบžเบงเบเป€เบฎเบปเบฒเบ‚เบฝเบ™ token เบเบฑเบš Redis:

OpenResty: เบ›เปˆเบฝเบ™ NGINX เปƒเบซเป‰เป€เบ›เบฑเบ™เป€เบŠเบตเบšเป€เบงเบตเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ—เบตเปˆเป€เบ•เบฑเบกเป„เบ›เบ”เป‰เบงเบเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”

เบขเปˆเบฒเบฅเบทเบกเบ•เบฑเป‰เบ‡เบ„เบธเบเบเบต, เบ™เบตเป‰เปเบกเปˆเบ™เป€เบฎเบฑเบ”เปƒเบ™เบชเบญเบ‡เป€เบชเบฑเป‰เบ™:

OpenResty: เบ›เปˆเบฝเบ™ NGINX เปƒเบซเป‰เป€เบ›เบฑเบ™เป€เบŠเบตเบšเป€เบงเบตเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ—เบตเปˆเป€เบ•เบฑเบกเป„เบ›เบ”เป‰เบงเบเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”

เบ•เบปเบงเบขเปˆเบฒเบ‡เปเบกเปˆเบ™เบ‡เปˆเบฒเบเบ”เบฒเบ, เบเบฒเบ™เบ„เบฒเบ”เป€เบ”เบปเบฒ. เปเบ™เปˆเบ™เบญเบ™, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบšเปเปˆเป€เบฎเบฑเบ”เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ—เบตเปˆเบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เปเบกเบงเบเบฑเบšเบ„เบปเบ™. เปเบ•เปˆเปƒเบœเบฎเบนเป‰เบˆเบฑเบเบžเบงเบเป€เบฎเบปเบฒ. เบชเบฐเบ™เบฑเป‰เบ™เปƒเบซเป‰เป€เบฎเบปเบฒเป„เบ›เป€เบšเบดเปˆเบ‡เบชเบดเปˆเบ‡เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰เปƒเบ™เบเบฒเบ™เบœเบฐเบฅเบดเบ”.

  • เป€เบšเบทเป‰เบญเบ‡เบซเบผเบฑเบ‡เบ™เป‰เบญเบเบ—เบตเปˆเบชเบธเบ”. เบšเบฒเบ‡เบ„เบฑเป‰เบ‡เบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เปƒเบซเป‰เบ‚เปเป‰เบกเบนเบ™เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เป€เบฅเบฑเบเบ™เป‰เบญเบเบเบฑเบš backend: เบšเบฒเบ‡เบšเปˆเบญเบ™เบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบ—เบปเบ”เปเบ—เบ™เบงเบฑเบ™เบ—เบต, เบšเบฒเบ‡เบšเปˆเบญเบ™เบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบชเบฐเปเบ”เบ‡เบšเบฒเบ‡เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆ, เป€เบงเบปเป‰เบฒเบงเปˆเบฒเบˆเปเบฒเบ™เบงเบ™เบœเบนเป‰เปƒเบŠเป‰เบขเบนเปˆเปƒเบ™เป€เบงเบฑเบšเป„เบŠเบ—เปŒเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™, screw on counter เบซเบผเบทเบชเบฐเบ–เบดเบ•เบด. เบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™. เบšเบฒเบ‡เบŠเบดเป‰เบ™เบชเปˆเบงเบ™เบ™เป‰เบญเบเบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰เบ‡เปˆเบฒเบเบซเบผเบฒเบ. เบ™เบตเป‰เบˆเบฐเป„เบง, เบ‡เปˆเบฒเบเปเบฅเบฐเบเบดเปˆเบ‡เปƒเบซเบเปˆ.
  • เบเบฒเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™เบ‚เปเป‰เบกเบนเบ™เบเปˆเบญเบ™. เบšเบฒเบ‡เบ„เบฑเป‰เบ‡เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบเบฑเบ‡เป‚เบ„เบชเบฐเบ™เบฒเปƒเบ™เบซเบ™เป‰เบฒเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเป€เบญเบปเบฒเป‚เบ„เบชเบฐเบ™เบฒเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบ”เป‰เบงเบเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เป API. เบ™เบตเป‰เปเบกเปˆเบ™เบ‡เปˆเบฒเบเบซเบผเบฒเบเบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰. เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเป„เบ”เป‰เป‚เบซเบฅเบ” backend เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เป€เบŠเบดเปˆเบ‡เป€เบฎเบฑเบ”เบงเบฝเบเบซเบ™เบฑเบเปเบฅเป‰เบง. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบเบฑเบšเปเบฅเบฐเป€เบเบฑเบšเป„เบ”เป‰เบ—เบตเปˆเบ™เบตเป‰. เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ” mold เบšเบฒเบ‡ JS เบซเบผเบท, เปƒเบ™เบ—เบฒเบ‡เบเบปเบ‡เบเบฑเบ™เบ‚เป‰เบฒเบก, unstick, preprocess เบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบกเบญเบšเปƒเบซเป‰เบœเบนเป‰เปƒเบŠเป‰.
  • Facade เบชเปเบฒเบฅเบฑเบšเบšเปเบฅเบดเบเบฒเบ™เบˆเบธเบฅเบฐเบžเบฒเบ. เบ™เบตเป‰เบเบฑเบ‡เป€เบ›เบฑเบ™เบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเบ”เบตเบซเบผเบฒเบ, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เบกเบฑเบ™. เบเปˆเบญเบ™เบ™เบฑเป‰เบ™, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เป€เบฎเบฑเบ”เบงเบฝเบเปƒเบซเป‰ Tenzor, เบšเปเบฅเบดเบชเบฑเบ”เบฅเบฒเบเบ‡เบฒเบ™เป€เบญเป€เบฅเบฑเบเป‚เบ•เบฃเบ™เบดเบเบ—เบตเปˆเบชเบฐเบซเบ™เบญเบ‡เบเบฒเบ™เบฅเบฒเบเบ‡เบฒเบ™เบชเปเบฒเบฅเบฑเบšเบ›เบฐเบกเบฒเบ™เป€เบ„เบดเปˆเบ‡เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบ™เบดเบ•เบดเบšเบธเบเบ„เบปเบ™เปƒเบ™เบ›เบฐเป€เบ—เบ”. เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบฎเบฑเบ”เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™, เบกเบตเบซเบผเบฒเบเบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบฎเบฑเบ”เบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™เป‚เบ”เบเปƒเบŠเป‰เบเบปเบ™เป„เบเบ”เบฝเบงเบเบฑเบ™: เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡, เบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”, เปเบฅเบฐเบญเบทเปˆเบ™เป†.
    OpenResty เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบ›เบฑเบ™เบเบฒเบงเบชเปเบฒเบฅเบฑเบš microservices เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เป€เบžเบทเปˆเบญเบชเบฐเบซเบ™เบญเบ‡เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบ”เบฝเบงเบเบฑเบšเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เปเบฅเบฐเบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบ”เบฝเบง. เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบˆเบธเบฅเบฐเบžเบฒเบเบชเบฒเบกเบฒเบ”เบ‚เบฝเบ™เป„เบ”เป‰เปƒเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบ—เบตเปˆเป€เบˆเบปเป‰เบฒเบกเบต Node.js เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰, เบ—เปˆเบฒเบ™เบกเบต PHP เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰, เบ—เปˆเบฒเบ™เบกเบต Python เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰, เบกเบตเบšเบฒเบ‡ Erlang เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเป€เบ‚เบปเป‰เบฒเปƒเบˆเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบ‚เบฝเบ™เบฅเบฐเบซเบฑเบ”เบ”เบฝเบงเบเบฑเบ™เบขเบนเปˆเบ—เบปเปˆเบงเบ—เบธเบเปเบซเปˆเบ‡. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, OpenResty เบชเบฒเบกเบฒเบ”เบ–เบทเบเบชเบฝเบšเปƒเบชเปˆเบ”เป‰เบฒเบ™เบซเบ™เป‰เบฒ.

  • เบชเบฐเบ–เบดเบ•เบด เปเบฅเบฐเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐ. เบ›เบปเบเบเบฐเบ•เบดเปเบฅเป‰เบง NGINX เปเบกเปˆเบ™เบขเบนเปˆเบ—เบฒเบ‡เป€เบ‚เบปเป‰เบฒ, เปเบฅเบฐเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบ—เบฑเบ‡เบซเบกเบปเบ”เบœเปˆเบฒเบ™เบกเบฑเบ™. เบกเบฑเบ™เปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเบ™เบตเป‰เบงเปˆเบฒเบกเบฑเบ™เบชเบฐเบ”เบงเบเบซเบผเบฒเบเบ—เบตเปˆเบˆเบฐเป€เบเบฑเบšเบเปเบฒ. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ„เบดเบ”เป„เบฅเปˆเบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบ—เบฑเบ™เบ—เบตเปเบฅเบฐเบ–เบดเป‰เบกเบกเบฑเบ™เบขเบนเปˆเบšเปˆเบญเบ™เปƒเบ”เบซเบ™เบถเปˆเบ‡, เบ•เบปเบงเบขเปˆเบฒเบ‡เป€เบŠเบฑเปˆเบ™ Elasticsearch, Logstash เบ”เบฝเบงเบเบฑเบ™, เบซเบผเบทเบžเบฝเบ‡เปเบ•เปˆเบ‚เบฝเบ™เบกเบฑเบ™เปƒเบชเปˆเบšเบฑเบ™เบ—เบถเบเปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบชเบปเปˆเบ‡เบกเบฑเบ™เป„เบ›เบšเปˆเบญเบ™เปƒเบ”เบšเปˆเบญเบ™เบซเบ™เบถเปˆเบ‡.
  • เบฅเบฐเบšเบปเบšเบซเบผเบฒเบเบœเบนเป‰เปƒเบŠเป‰. เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡, เป€เบเบกเบญเบญเบ™เป„เบฅเบ™เปŒเปเบกเปˆเบ™เบเบฑเบ‡เบ”เบตเบซเบผเบฒเบเบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”. เบกเบทเป‰เบ™เบตเป‰เปƒเบ™เป€เบกเบทเบญเบ‡ Cape Town Alexander Gladysh เบˆเบฐเบšเบญเบเบ—เปˆเบฒเบ™เบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเบ•เบปเป‰เบ™เปเบšเบšเป€เบเบกเบ—เบตเปˆเบกเบตเบœเบนเป‰เบซเบผเบดเป‰เบ™เบซเบผเบฒเบเบ„เบปเบ™เป‚เบ”เบเปƒเบŠเป‰ OpenResty.
  • เบฎเป‰เบญเบ‡เบ‚เปเบเบฒเบ™เบเบฑเปˆเบ™เบ•เบญเบ‡ (WAF). เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบกเบฑเบ™เป€เบ›เบฑเบ™เบ„เบปเบ™เบญเบฑเบšเป€เบ”เบ”: เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เปƒเบซเป‰เบ—เบธเบเบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡ firewalls เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเป€เบงเบฑเบšเป„เบŠเบ•เปŒ, เบกเบตเบซเบผเบฒเบเบšเปเบฅเบดเบเบฒเบ™เบ—เบตเปˆเบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒ. เบ”เป‰เบงเบเบ„เบงเบฒเบกเบŠเปˆเบญเบเป€เบซเบฅเบทเบญเบ‚เบญเบ‡ OpenResty, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เปƒเบซเป‰เบ•เบปเบงเบ—เปˆเบฒเบ™เป€เบญเบ‡เป€เบ›เบฑเบ™ firewall เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเป€เบงเบฑเบšเป„เบŠเบ•เปŒ, เป€เบŠเบดเปˆเบ‡เบˆเบฐเบ‡เปˆเบฒเบเบ”เบฒเบเปเบฅเบฐเบ‡เปˆเบฒเบเบ”เบฒเบเบเบฒเบ™เบเบฑเปˆเบ™เบ•เบญเบ‡เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบ•เบฒเบกเบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบกเบต Python, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เป€เบ‚เบปเป‰เบฒเปƒเบˆเบงเปˆเบฒ PHP เบˆเบฐเบšเปเปˆเบ–เบทเบเบชเบฑเบเปƒเบชเปˆเบ—เปˆเบฒเบ™เปเบ™เปˆเบ™เบญเบ™, เป€เบงเบฑเป‰เบ™เป€เบชเบเปเบ•เปˆ, เปเบ™เปˆเบ™เบญเบ™, เบ—เปˆเบฒเบ™เบˆเบฐเป€เบญเบปเบฒเบกเบฑเบ™เบกเบฒเบˆเบฒเบ console. เบ—เปˆเบฒเบ™เบฎเบนเป‰เบงเปˆเบฒเบ—เปˆเบฒเบ™เบกเบต MySQL เปเบฅเบฐ Python. เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™, เปƒเบ™เบ—เบตเปˆเบ™เบตเป‰เบžเบงเบเป€เบ‚เบปเบฒเบชเบฒเบกเบฒเบ”เบžเบฐเบเบฒเบเบฒเบกเป€เบฎเบฑเบ”เบšเบฒเบ‡เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบเบฒเบ™เบ‚เป‰เบฒเบกเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเปเบฅเบฐเปƒเบชเปˆเบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™. เป€เบžเบฒเบฐเบชเบฐเบ™เบฑเป‰เบ™, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบเบฑเปˆเบ™เบ•เบญเบ‡เบญเบญเบเบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เป dumb เบขเปˆเบฒเบ‡เป„เบงเบงเบฒเปเบฅเบฐเบฅเบฒเบ„เบฒเบ–เบทเบเบขเบนเปˆเบ—เบฒเบ‡เบซเบ™เป‰เบฒ.
  • เบŠเบธเบกเบŠเบปเบ™. เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆ OpenResty เปเบกเปˆเบ™เบญเบตเบ‡เปƒเบชเปˆ NGINX, เบกเบฑเบ™เบกเบตเป‚เบšเบ™เบฑเบ” - เบ™เบตเป‰เปเบกเปˆเบ™ เบŠเบธเบกเบŠเบปเบ™ NGINX. เบกเบฑเบ™เปƒเบซเบเปˆเบซเบผเบฒเบ, เปเบฅเบฐเบซเบผเบฒเบเป†เบ„เปเบฒเบ–เบฒเบกเบ—เบตเปˆเป€เบˆเบปเป‰เบฒเบˆเบฐเบกเบตเบขเบนเปˆเปƒเบ™เบ—เปเบฒเบญเบดเบ”เป„เบ”เป‰เบ–เบทเบเบ•เบญเบšเปเบฅเป‰เบงเป‚เบ”เบเบŠเบธเบกเบŠเบปเบ™ NGINX.

    เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒ Lua. เบกเบทเป‰เบงเบฒเบ™เบ™เบตเป‰เบ‚เป‰เบญเบเป„เบ”เป‰เบฅเบปเบกเบเบฑเบšเบžเบงเบเบ—เบตเปˆเป€เบ‚เบปเป‰เบฒเบกเบฒเปƒเบ™เบ‡เบฒเบ™ HighLoad++ เบกเบทเป‰เบเบถเบเบŠเป‰เบญเบก เปเบฅเบฐเป„เบ”เป‰เบเบดเบ™เบงเปˆเบฒเบกเบตเปเบ•เปˆ Tarantool เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™เบ—เบตเปˆเบ‚เบฝเบ™เป€เบ›เบฑเบ™ Lua. เบ™เบตเป‰เบšเปเปˆเปเบกเปˆเบ™เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบซเบผเบฒเบเบชเบดเปˆเบ‡เบซเบผเบฒเบเบขเปˆเบฒเบ‡เป„เบ”เป‰เบ–เบทเบเบ‚เบฝเบ™เป„เบงเป‰เปƒเบ™ Lua. เบ•เบปเบงเบขเปˆเบฒเบ‡: OpenResty, Prosody XMPP server, Love2D game engine, Lua is scripted in Warcraft and other. เบกเบตเบซเบผเบฒเบเบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒ Lua, เบžเบงเบเป€เบ‚เบปเบฒเบกเบตเบŠเบธเบกเบŠเบปเบ™เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเปเบฅเบฐเบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡. เบ—เบธเบเป†เบ„เปเบฒเบ–เบฒเบก Lua เบ‚เบญเบ‡เบ‚เป‰เบญเบเป„เบ”เป‰เบ–เบทเบเบ•เบญเบšเบžเบฒเบเปƒเบ™เบชเบญเบ‡เบชเบฒเบกเบŠเบปเปˆเบงเป‚เบกเบ‡. เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ—เปˆเบฒเบ™เบ‚เบฝเบ™เปƒเบชเปˆเบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ—เบฒเบ‡เป„เบ›เบชเบฐเบ™เบต, เบขเปˆเบฒเบ‡เปเบ—เป‰เบˆเบดเบ‡เปƒเบ™เบชเบญเบ‡เบชเบฒเบกเบ™เบฒเบ—เบตเบกเบตเบ„เปเบฒเบ•เบญเบšเบˆเปเบฒเบ™เบงเบ™เบซเบฅเบฒเบ, เบžเบงเบเป€เบ‚เบปเบฒเบญเบฐเบ—เบดเบšเบฒเบเบงเปˆเบฒเปเบกเปˆเบ™เบซเบเบฑเบ‡เปเบฅเบฐเปเบ™เบงเปƒเบ”, เปเบกเปˆเบ™เบซเบเบฑเบ‡. เบกเบฑเบ™เบเบดเปˆเบ‡เปƒเบซเบเปˆ. เปเบ•เปˆเบซเบ™เป‰เบฒเป€เบชเบเบ”เบฒเบ, เบŠเบธเบกเบŠเบปเบ™เบ—เบตเปˆเบˆเบดเบ‡เปƒเบˆเปเบšเบšเบ™เบฑเป‰เบ™เบšเปเปˆเปเบกเปˆเบ™เบขเบนเปˆเบ—เบปเปˆเบงเบ—เบธเบเปเบซเปˆเบ‡.
    OpenResty เบกเบต GitHub, เบšเปˆเบญเบ™เบ—เบตเปˆเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบ›เบตเบ”เบšเบฑเบ™เบซเบฒเป„เบ”เป‰เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เปเบ•เบ. เบกเบตเบฅเบฒเบเบŠเบทเปˆเบ—เบฒเบ‡เป„เบ›เบชเบฐเบ™เบตเบขเบนเปˆเปƒเบ™ Google Groups เบšเปˆเบญเบ™เบ—เบตเปˆเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบชเบปเบ™เบ—เบฐเบ™เบฒเบšเบฑเบ™เบซเบฒเบ—เบปเปˆเบงเป„เบ›, เบกเบตเบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ—เบฒเบ‡เป„เบ›เบชเบฐเบ™เบตเป€เบ›เบฑเบ™เบžเบฒเบชเบฒเบˆเบตเบ™ - เป€เบˆเบปเป‰เบฒเบšเปเปˆเป€เบ„เบตเบเบฎเบนเป‰, เบšเบฒเบ‡เบ—เบตเป€เบˆเบปเป‰เบฒเบญเบฒเบ”เบˆเบฐเบšเปเปˆเป€เบงเบปเป‰เบฒเบžเบฒเบชเบฒเบญเบฑเบ‡เบเบดเบ”, เปเบ•เปˆเป€เบˆเบปเป‰เบฒเบกเบตเบ„เบงเบฒเบกเบฎเบนเป‰เบเปˆเบฝเบงเบเบฑเบšเบžเบฒเบชเบฒเบˆเบตเบ™.

เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบš

  • เบ‚เป‰เบญเบเบซเบงเบฑเบ‡เบงเปˆเบฒเบ‚เป‰เบญเบเบชเบฒเบกเบฒเบ”เบšเบปเปˆเบ‡เบšเบญเบเบงเปˆเบฒ OpenResty เป€เบ›เบฑเบ™เบเบญเบšเบ—เบตเปˆเบชเบฐเบ”เบงเบเบซเบผเบฒเบเบ—เบตเปˆเบ›เบฑเบšเปเบ•เปˆเบ‡เบชเปเบฒเบฅเบฑเบšเป€เบงเบฑเบš.
  • เบกเบฑเบ™เบกเบตเบ‚เบญเบšเป€เบ‚เบ”เบ•เปˆเปเบฒเบ‚เบญเบ‡เบเบฒเบ™เป€เบ‚เบปเป‰เบฒ, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบฅเบฐเบซเบฑเบ”เปเบกเปˆเบ™เบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบเบฑเบšเบชเบดเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ‚เบฝเบ™, เบžเบฒเบชเบฒเปเบกเปˆเบ™เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบ‡เปˆเบฒเบเบ”เบฒเบเปเบฅเบฐเบซเบ™เป‰เบญเบ.
  • เบกเบฑเบ™เบชเบฐเบซเบ™เบญเบ‡ I/O asynchronous เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™ callbacks, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบšเปเปˆเบกเบต noodles เบ”เบฑเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบšเบฒเบ‡เบ„เบฑเป‰เบ‡เบชเบฒเบกเบฒเบ”เบ‚เบฝเบ™เปƒเบ™ NodeJS.
  • เบกเบฑเบ™เบกเบตเบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบ‡เปˆเบฒเบ, เป€เบžเบฒเบฐเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบžเบฝเบ‡เปเบ•เปˆ NGINX เบ—เบตเปˆเบกเบตเป‚เบกเบ”เบนเบ™เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเปเบฅเบฐเบฅเบฐเบซเบฑเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เปเบฅเบฐเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบˆเบฐเป€เบฎเบฑเบ”เบงเบฝเบเบ—เบฑเบ™เบ—เบต.
  • เบŠเบธเบกเบŠเบปเบ™เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเปเบฅเบฐเบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡.

เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบšเปเปˆเป„เบ”เป‰เบšเบญเบเปƒเบ™เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบงเบดเบ—เบตเบเบฒเบ™เบเปเบฒเบ™เบปเบ”เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เปเบกเปˆเบ™เป€เบฎเบฑเบ”, เบกเบฑเบ™เป„เบ”เป‰เบเบฒเบเป€เบ›เบฑเบ™เป€เบฅเบทเปˆเบญเบ‡เบเบฒเบงเบซเบผเบฒเบ.

เบ‚เบญเบšเปƒเบˆเบชเปเบฒเบฅเบฑเบšเบ„เบงเบฒเบกเบชเบปเบ™เปƒเบˆเบ‚เบญเบ‡เบ—เปˆเบฒเบ™!


Vladimir Protasov - OpenResty: เบเบฒเบ™เบซเบฑเบ™ NGINX เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ—เบตเปˆเป€เบ•เบฑเบกเป„เบ›เบ”เป‰เบงเบเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™