OpenResty: NGINX рдХреЛ рдПрдХ рдкреВрд░реНрдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд░реНрд╡рд░ рдореЗрдВ рдмрджрд▓рдирд╛

OpenResty: NGINX рдХреЛ рдПрдХ рдкреВрд░реНрдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд░реНрд╡рд░ рдореЗрдВ рдмрджрд▓рдирд╛рд╣рдо рдлрд┐рд░ рд╕реЗ рд╕рдореНрдореЗрд▓рди рд░рд┐рдкреЛрд░реНрдЯ рдХреА рдкреНрд░рддрд┐рд▓реЗрдЦ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ HighLoad ++ 2016, рдЬреЛ рдкрд┐рдЫрд▓реЗ рд╕рд╛рд▓ 7-8 рдирд╡рдВрдмрд░ рдХреЛ рдореЙрд╕реНрдХреЛ рдХреЗ рдкрд╛рд╕ рд╕реНрдХреЛрд▓реНрдХреЛрд╡реЛ рдореЗрдВ рд╣реБрдЖ рдерд╛ред рд╡реНрд▓рд╛рджрд┐рдореАрд░ рдкреНрд░реЛрддрд╛рд╕реЛрд╡ OpenResty рдФрд░ Lua рдХреЗ рд╕рд╛рде NGINX рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдмрддрд╛рддрд╛ рд╣реИред

рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░, рдореЗрд░рд╛ рдирд╛рдо рд╡реНрд▓рд╛рджрд┐рдореАрд░ рдкреНрд░реЛрддрд╛рд╕реЛрд╡ рд╣реИ, рдореИрдВ рдкреИрд░реЗрд▓рд▓реНрд╕ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВред рдореИрдВ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рдмрддрд╛рдКрдВрдЧрд╛. рдореИрдВ рдЕрдкрдиреЗ рдЬреАрд╡рди рдХрд╛ рддреАрди рдЪреМрдерд╛рдИ рд╣рд┐рд╕реНрд╕рд╛ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдмрд┐рддрд╛рддрд╛ рд╣реВрдБред рдореИрдВ рд╢рд╛рдмреНрджрд┐рдХ рдЕрд░реНрдереЛрдВ рдореЗрдВ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдмрди рдЧрдпрд╛: рдХрднреА-рдХрднреА рдореИрдВ рдЕрдкрдиреЗ рд╕рдкрдиреЛрдВ рдореЗрдВ рдХреЛрдб рджреЗрдЦрддрд╛ рд╣реВрдВред рдЬреАрд╡рди рдХрд╛ рдПрдХ рдЪреМрдерд╛рдИ рд╣рд┐рд╕реНрд╕рд╛ рдФрджреНрдпреЛрдЧрд┐рдХ рд╡рд┐рдХрд╛рд╕, рд▓реЗрдЦрди рдХреЛрдб рд╣реИ рдЬреЛ рд╕реАрдзреЗ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рдХреЛрдб рдЬрд┐рд╕рдХрд╛ рдЖрдкрдореЗрдВ рд╕реЗ рдХреБрдЫ рд▓реЛрдЧ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдПрд╣рд╕рд╛рд╕ рдирд╣реАрдВ рдХрд░рддреЗред

рддреЛ рдЖрдк рд╕рдордЭ рдЧрдП рдХрд┐ рдпрд╣ рдХрд┐рддрдирд╛ рдмреБрд░рд╛ рдерд╛ред рдЬрдм рдореИрдВ рдереЛрдбрд╝рд╛ рдЬреВрдирд┐рдпрд░ рдерд╛, рдореИрдВ рдЖрдпрд╛ рдФрд░ рдореБрдЭреЗ рдпреЗ рджреЛ-рдЯреЗрд░рд╛рдмрд╛рдЗрдЯ рдбреЗрдЯрд╛рдмреЗрд╕ рджрд┐рдП рдЧрдПред рдЕрдм рдпрд╣рд╛рдВ рд╣рд░ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдпрд╣ рдЕрддреНрдпрдзрд┐рдХ рдмреЛрдЭ рд╣реИред рдореИрдВ рд╕рдореНрдореЗрд▓рдиреЛрдВ рдореЗрдВ рдЧрдпрд╛ рдФрд░ рдкреВрдЫрд╛: "рджреЛрд╕реНрддреЛрдВ, рдореБрдЭреЗ рдмрддрд╛рдУ, рдЖрдкрдХреЗ рдкрд╛рд╕ рдмрдбрд╝рд╛ рдбреЗрдЯрд╛ рд╣реИ, рдХреНрдпрд╛ рд╕рдм рдХреБрдЫ рдЕрдЪреНрдЫрд╛ рд╣реИ? рдЖрдкрдХреЗ рд╡рд╣рд╛рдВ рдХрд┐рддрдиреЗ рдЖрдзрд╛рд░ рд╣реИрдВ? рдЙрдиреНрд╣реЛрдВрдиреЗ рдореБрдЭреЗ рдЙрддреНрддрд░ рджрд┐рдпрд╛: "рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 100 рдЧреАрдЧрд╛рдмрд╛рдЗрдЯ рд╣реИрдВ!" рдореИрдВрдиреЗ рдХрд╣рд╛: "рдмрдврд╝рд┐рдпрд╛, 100 рдЧреАрдЧрд╛рдмрд╛рдЗрдЯ!" рдФрд░ рдореИрдВ рдорди рд╣реА рдорди рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдореИрдВ рдЕрдкрдиреЗ рдкреЛрдХрд░ рдЪреЗрд╣рд░реЗ рдХреЛ рд╕рд╛рд╡рдзрд╛рдиреА рд╕реЗ рдХреИрд╕реЗ рдмрдирд╛рдП рд░рдЦреВрдВред рдЖрдк рд╕реЛрдЪрддреЗ рд╣реИрдВ, рд╣рд╛рдБ, рд▓реЛрдЧ рдЕрдЪреНрдЫреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдЖрдк рд╡рд╛рдкрд╕ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрди рдорд▓реНрдЯреА-рдЯреЗрд░рд╛рдмрд╛рдЗрдЯ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдЫреЗрдбрд╝рдЫрд╛рдбрд╝ рдХрд░рддреЗ рд╣реИрдВред рдФрд░ рдпрд╣ рдЬреВрдирд┐рдпрд░ рд╣реЛрдирд╛ рд╣реИ. рдХреНрдпрд╛ рдЖрдк рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХрд┐рддрдирд╛ рдмрдбрд╝рд╛ рдЭрдЯрдХрд╛ рд╣реИ?

рдореИрдВ 20 рд╕реЗ рдЕрдзрд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдПрдБ рдЬрд╛рдирддрд╛ рд╣реВрдБред рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдореБрдЭреЗ рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдерд╛ред рд╡реЗ рдЖрдкрдХреЛ рдПрд░реНрд▓рд╛рдВрдЧ, рд╕реА, рд╕реА++, рд▓реБрдЖ, рдкрд╛рдпрдерди, рд░реВрдмреА, рдХреБрдЫ рдФрд░ рдореЗрдВ рдХреЛрдб рджреЗрддреЗ рд╣реИрдВ, рдФрд░ рдЖрдкрдХреЛ рдпрд╣ рд╕рдм рдХрд╛рдЯрдирд╛ рд╣реЛрдЧрд╛ред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдореБрдЭреЗ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рд╕рдЯреАрдХ рд╕рдВрдЦреНрдпрд╛ рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рдерд╛, рд▓реЗрдХрд┐рди 20 рддрд╛рд░реАрдЦ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╣реАрдВ рд╕рдВрдЦреНрдпрд╛ рдЦреЛ рдЧрдИ рдереАред

рдЪреВрдБрдХрд┐ рдЙрдкрд╕реНрдерд┐рдд рд╕рднреА рд▓реЛрдЧ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╕рдорд╛рдирддрд╛рдПрдБ рдХреНрдпрд╛ рд╣реИрдВ рдФрд░ рд╣рдо рдХреНрдпрд╛ рдХрд░рддреЗ рд╣реИрдВ, рдореИрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдирд╣реАрдВ рдХрд░реВрдБрдЧрд╛ рдХрд┐ рд╣рдо рдХрд┐рддрдиреЗ рдЕрдЪреНрдЫреЗ рд╣реИрдВ рдФрд░ рд╣рдо рдХреНрдпрд╛ рдХрд░рддреЗ рд╣реИрдВред рдореИрдВ рдЖрдкрдХреЛ рдмрд╕ рдЗрддрдирд╛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рджреБрдирд┐рдпрд╛ рднрд░ рдореЗрдВ рд╣рдорд╛рд░реЗ 13 рдХрд╛рд░реНрдпрд╛рд▓рдп рд╣реИрдВ, 300 рд╕реЗ рдЕрдзрд┐рдХ рдХрд░реНрдордЪрд╛рд░реА рд╣реИрдВ, рдореЙрд╕реНрдХреЛ, рддреЗрд▓рд┐рди рдФрд░ рдорд╛рд▓реНрдЯрд╛ рдореЗрдВ рд╡рд┐рдХрд╛рд╕ рд╣реЛ рд░рд╣рд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ, рддреЛ рдЖрдк рдЗрд╕реЗ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдорд╛рд▓реНрдЯрд╛ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ рд╕рд░реНрджрд┐рдпреЛрдВ рдореЗрдВ рдардВрдб рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдЕрдкрдиреА рдкреАрда рдХреЛ рдЧрд░реНрдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рд╣рдорд╛рд░рд╛ рд╡рд┐рднрд╛рдЧ рдкрд╛рдпрдерди 2 рдореЗрдВ рд▓рд┐рдЦрддрд╛ рд╣реИред рд╣рдо рд╡реНрдпрд╡рд╕рд╛рдп рдореЗрдВ рд╣реИрдВ рдФрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдлреИрд╢рдиреЗрдмрд▓ рддрдХрдиреАрдХреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдиреБрдХрд╕рд╛рди рд╣реЛрддрд╛ рд╣реИред рд╣рдо Django рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рд╕рдм рдХреБрдЫ рд╣реИ, рдФрд░ рд╣рдордиреЗ рдЬреЛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдерд╛ рдЙрд╕реЗ рд▓реЗ рд▓рд┐рдпрд╛ рдФрд░ рдЙрд╕реЗ рдлреЗрдВрдХ рджрд┐рдпрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ MySQL, Redis рдФрд░ NGINXред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдФрд░ рднреА рдмрд╣реБрдд рд╕реА рдЕрдЪреНрдЫреА рдЪреАрдЬрд╝реЗрдВ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ MongoDB рд╣реИ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрдзрд░-рдЙрдзрд░ рджреМрдбрд╝рдиреЗ рд╡рд╛рд▓реЗ рдЦрд░рдЧреЛрд╢ рд╣реИрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рдм рдХреБрдЫ рд╣реИ - рд▓реЗрдХрд┐рди рдпрд╣ рдореЗрд░рд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдореИрдВ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ред

OpenResty

рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдпрд╛. рдЖрдЗрдП рдЬрд╛рдиреЗрдВ рдХрд┐ рдореИрдВ рдЖрдЬ рдХрд┐рд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ:

  • OpenResty рдХреНрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдХрд┐рд╕рдХреЗ рд╕рд╛рде рдЦрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ?
  • рдЬрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ Python, NodeJS, PHP, Go рдФрд░ рдЕрдиреНрдп рдЕрдЪреНрдЫреА рдЪреАрдЬреЗрдВ рд╣реИрдВ рдЬрд┐рдирд╕реЗ рд╣рд░ рдХреЛрдИ рдЦреБрд╢ рд╣реИ рддреЛ рдПрдХ рдФрд░ рдкрд╣рд┐рдпреЗ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХреНрдпреЛрдВ рдХрд░реЗрдВ?
  • рдФрд░ рдЬреАрд╡рди рд╕реЗ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг. рдореБрдЭреЗ рд░рд┐рдкреЛрд░реНрдЯ рдореЗрдВ рдмрд╣реБрдд рдХрдЯреМрддреА рдХрд░рдиреА рдкрдбрд╝реА рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдореБрдЭреЗ 3,5 рдШрдВрдЯреЗ рд▓рдЧреЗ, рдЗрд╕рд▓рд┐рдП рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рд╣реЛрдВрдЧреЗред

рдУрдкрдирд░реЗрд╕реНрдЯреА рдПрдирдЬреАрдЖрдИрдПрдирдПрдХреНрд╕ рд╣реИред рдЙрдирдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдкреВрд░реНрдг рд╡реЗрдм рд╕рд░реНрд╡рд░ рд╣реИ рдЬреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдордореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рд▓реЛрдЧ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдПрдирдЬреАрдЖрдИрдПрдирдПрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЖрдк рд╕рднреА рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╡рд╣ рддреЗрдЬрд╝ рдФрд░ рдЕрдЪреНрдЫрд╛ рд╣реИред рдЙрдиреНрд╣реЛрдВрдиреЗ рдЗрд╕рдореЗрдВ рдХреВрд▓ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ I/O рдмрдирд╛рдпрд╛, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдХреБрдЫ рднреА рд╕рд╛рдЗрдХрд┐рд▓ рдЪрд▓рд╛рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ, рдЬреИрд╕реЗ рдЙрдиреНрд╣реЛрдВрдиреЗ рдкрд╛рдпрдерди рдореЗрдВ рдЧреАрд╡реЗрдВрдЯ рдХрд┐рдпрд╛ рдерд╛ред Gevent рдЕрдЪреНрдЫрд╛ рд╣реИ, рдмрдврд╝рд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк C рдХреЛрдб рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдФрд░ рдХреБрдЫ рдЧрд▓рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ Gevent рдХреЗ рд╕рд╛рде рдЖрдк рдЗрд╕реЗ рдбреАрдмрдЧ рдХрд░рдиреЗ рдореЗрдВ рдкрд╛рдЧрд▓ рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред рдореЗрд░рд╛ рдЕрдиреБрднрд╡ рдерд╛: рд╡рд╣рд╛рдВ рдХреНрдпрд╛ рдЧрд▓рдд рд╣реБрдЖ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рдкреВрд░реЗ рджреЛ рджрд┐рди рд▓рдЧ рдЧрдПред рдЕрдЧрд░ рдХрд┐рд╕реА рдиреЗ рдХрдИ рд╣рдлреНрддреЛрдВ рддрдХ рдЦреЛрдЬрдмреАрди рдирд╣реАрдВ рдХреА рд╣реЛрддреА, рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рдвреВрдВрдвреА рд╣реЛрддреА, рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рд╣реЛрддрд╛ рдФрд░ Google рдиреЗ рдЙрд╕реЗ рдирд╣реАрдВ рдвреВрдВрдврд╛ рд╣реЛрддрд╛, рддреЛ рд╣рдо рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд╛рдЧрд▓ рд╣реЛ рдЧрдП рд╣реЛрддреЗред

рдПрдирдЬреАрдЖрдИрдПрдирдПрдХреНрд╕ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреИрд╢рд┐рдВрдЧ рдФрд░ рд╕реНрдерд┐рд░ рд╕рд╛рдордЧреНрд░реА рдореМрдЬреВрдж рд╣реИред рдЖрдкрдХреЛ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдорд╛рдирд╡реАрдп рддрд░реАрдХреЗ рд╕реЗ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдП, рддрд╛рдХрд┐ рдЖрдк рдХрд╣реАрдВ рдзреАрдореЗ рди рд╣реЛрдВ, рддрд╛рдХрд┐ рдЖрдк рдХрд╣реАрдВ рд╡рд░реНрдгрдирдХрд░реНрддрд╛ рди рдЦреЛ рджреЗрдВред Nginx рдХреЛ рддреИрдирд╛рдд рдХрд░рдирд╛ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рдЖрдкрдХреЛ рдпрд╣ рд╕реЛрдЪрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд▓реЗрдирд╛ рд╣реИ - WSGI, PHP-FPM, Gunicorn, Unicornред Nginx рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХреЛрдВ рдХреЛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╡реЗ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рд╣реИред Nginx рд╕рдВрд░рдЪрд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝реА рджреЗрд░ рдмрд╛рдж рдмрд╛рдд рдХрд░реВрдВрдЧрд╛. рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдЗрд╕рдХрд╛ рдПрдХ рдЪрд░рдг рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдпрд╣ рдЕрдиреБрд░реЛрдз рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдЬрдм рдпрд╣ рдЗрд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЬрдм рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕рд╛рдордЧреНрд░реА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

Nginx рдЕрдЪреНрдЫрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ: рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рд▓рдЪреАрд▓рд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдЙрди рд╕рднреА рд╢рд╛рдирджрд╛рд░ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдЬрд┐рдиреНрд╣реЗрдВ рд▓реЛрдЧреЛрдВ рдиреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рднрд░ рджрд┐рдпрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдХреНрдпрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рд╢рдХреНрддрд┐ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ. рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рддрд╛рдУрдмрд╛рдУ рдХреЗ рд▓реЛрдЧреЛрдВ рдиреЗ, рдмрд╣реБрдд рд╕рдордп рдкрд╣рд▓реЗ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдЖрда рд╕рд╛рд▓ рдкрд╣рд▓реЗ, рдЗрд╕рдореЗрдВ рд▓реБрдЖ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ рдерд╛ред рдпрд╣ рдХреНрдпрд╛ рджреЗрддрд╛ рд╣реИ?

  • рдЖрдХрд╛рд░. рдпрд╣ рдЫреЛрдЯрд╛ рд╣реИред LuaJIT рд▓рдЧрднрдЧ 100-200 рдХрд┐рд▓реЛрдмрд╛рдЗрдЯ рдореЗрдореЛрд░реА рдУрд╡рд░рд╣реЗрдб рдФрд░ рдиреНрдпреВрдирддрдо рдкреНрд░рджрд░реНрд╢рди рдУрд╡рд░рд╣реЗрдб рджреЗрддрд╛ рд╣реИред
  • рдЧрддрд┐. LuaJIT рджреБрднрд╛рд╖рд┐рдпрд╛ рдХрдИ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ C рдХреЗ рдХрд░реАрдм рд╣реИ, рдХреБрдЫ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдпрд╣ рдЬрд╛рд╡рд╛ рд╕реЗ рд╣рд╛рд░ рдЬрд╛рддрд╛ рд╣реИ, рджреВрд╕рд░реЛрдВ рдореЗрдВ рдпрд╣ рдЗрд╕рд╕реЗ рдмреЗрд╣рддрд░ рдкреНрд░рджрд░реНрд╢рди рдХрд░рддрд╛ рд╣реИред рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдЕрддреНрдпрд╛рдзреБрдирд┐рдХ, рд╕рдмрд╕реЗ рдмрдврд╝рд┐рдпрд╛ JIT рдХрдВрдкрд╛рдЗрд▓рд░ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рдерд╛ред рдЕрдм рдХреВрд▓рд░ рд╡рд╛рд▓реЗ рднреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рдмрд╣реБрдд рднрд╛рд░реА рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд╣реА V8ред рдХреБрдЫ рдЬреЗрдПрд╕ рджреБрднрд╛рд╖рд┐рдП рдФрд░ рдЬрд╛рд╡рд╛ рд╣реЙрдЯрд╕реНрдкреЙрдЯ рдХреБрдЫ рдмрд┐рдВрджреБрдУрдВ рдкрд░ рддреЗрдЬрд╝ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреБрдЫ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рд╡реЗ рдЕрднреА рднреА рдХрдордЬрд╝реЛрд░ рд╣реИрдВред
  • рд╕реАрдЦрдиреЗ рдореЗрдВ рдЖрд╕рд╛рди. рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕, рдорд╛рди рд▓реАрдЬрд┐рдП, рдкрд░реНрд▓ рдХреЛрдб рдЖрдзрд╛рд░ рд╣реИ, рдФрд░ рдЖрдк рдмреБрдХрд┐рдВрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдкрд░реНрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдирд╣реАрдВ рдорд┐рд▓реЗрдВрдЧреЗред рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдореЗрдВ рдирд╣реАрдВ рд╣реИрдВ, рд╡реЗ рд╕рднреА рдЫреАрди рд▓рд┐рдП рдЧрдП, рдФрд░ рдЙрдиреНрд╣реЗрдВ рдкрдврд╝рд╛рдирд╛ рд▓рдВрдмрд╛ рдФрд░ рдХрдард┐рди рд╣реИред рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рдЕрдиреНрдп рдЪреАрдЬрд╝ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдпрд╛ рдЙрдиреНрд╣реЗрдВ рдвреВрдВрдврдирд╛ рд╣реЛрдЧрд╛ред рд▓реБрдЖ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ. рдХреЛрдИ рднреА рдЬреВрдирд┐рдпрд░ рддреАрди рджрд┐рди рдореЗрдВ рд▓реВрдЖ рд╕реАрдЦ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕реЗ рд╕рдордЭрдиреЗ рдореЗрдВ рдореБрдЭреЗ рд▓рдЧрднрдЧ рджреЛ рдШрдВрдЯреЗ рд▓рдЧ рдЧрдПред рджреЛ рдШрдВрдЯреЗ рдмрд╛рдж рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреНрд░реЛрдбрдХреНрд╢рди рдореЗрдВ рдХреЛрдб рд▓рд┐рдЦ рд░рд╣рд╛ рдерд╛ред рд▓рдЧрднрдЧ рдПрдХ рд╕рдкреНрддрд╛рд╣ рдмрд╛рдж рд╡рд╣ рд╕реАрдзреЗ рдкреНрд░реЛрдбрдХреНрд╢рди рдореЗрдВ рдЧрдпреЗ рдФрд░ рдЪрд▓реЗ рдЧрдпреЗред

рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдпрд╣ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рджрд┐рдЦрддрд╛ рд╣реИ:

OpenResty: NGINX рдХреЛ рдПрдХ рдкреВрд░реНрдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд░реНрд╡рд░ рдореЗрдВ рдмрджрд▓рдирд╛

рдпрд╣рд╛рдБ рдмрд╣реБрдд рдХреБрдЫ рд╣реИ. OpenResty рдиреЗ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рдПрдХрддреНрд░ рдХрд┐рдпрд╛ рд╣реИ, рд▓реБрдЖрд╢ рдФрд░ рдЗрдВрдЬрди рджреЛрдиреЛрдВред рдФрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕рдм рдХреБрдЫ рддреИрдпрд╛рд░ рд╣реИ - рддреИрдирд╛рдд рдФрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг

рдЧреАрдд рдХреЗ рдмреЛрд▓ рдмрд╣реБрдд рд╣реЛ рдЧрдП, рдЕрдм рдХреЛрдб рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред рдпрд╣рд╛рдБ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб рд╣реИ:

OpenResty: NGINX рдХреЛ рдПрдХ рдкреВрд░реНрдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд░реНрд╡рд░ рдореЗрдВ рдмрджрд▓рдирд╛

рд╡рд╣рд╛рдВ рдХреНрдпрд╛ рд╣реИ? рдпрд╣ рдПрдХ рдЗрдВрдЬрди рд╕реНрдерд╛рди рд╣реИ. рд╣рдо рдЪрд┐рдВрддрд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд╣рдо рдЕрдкрдиреА рдЦреБрдж рдХреА рд░реВрдЯрд┐рдВрдЧ рдирд╣реАрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рд╣рдо рдХреБрдЫ рд░реЗрдбреАрдореЗрдб рдирд╣реАрдВ рд▓реЗрддреЗ рд╣реИрдВ - рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдирдЬреАрдЖрдИрдПрдирдПрдХреНрд╕ рдореЗрдВ рд╣реИ, рд╣рдо рдПрдХ рдЕрдЪреНрдЫрд╛ рдФрд░ рдЖрд▓рд╕реА рдЬреАрд╡рди рдЬреАрддреЗ рд╣реИрдВред

content_by_lua_block рдПрдХ рдмреНрд▓реЙрдХ рд╣реИ рдЬреЛ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рд╣рдо рд▓реБрдЖ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд╛рдордЧреНрд░реА рдкрд░реЛрд╕ рд░рд╣реЗ рд╣реИрдВред рд╣рдо Engins рд╡реЗрд░рд┐рдПрдмрд▓ рд▓реЗрддреЗ рд╣реИрдВ 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 рдирд╣реАрдВ рдкрдврд╝рдирд╛ рдЪрд╛рд╣рддрд╛. рд╣рдореЗрдВ рдлреНрд░рдВрдЯ-рдПрдВрдб рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдХрднреА-рдХрднреА рд╣рдо рдкрд╣рд▓реЗ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗред рдФрд░ рдПрд╕рдИрдУ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдХрд╣реЗрдВрдЧреЗ рдХрд┐ рдЕрдЧрд░ рд╣рдо рддрд╕реНрд╡реАрд░реЗрдВ рдвреВрдВрдв рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЗрд╕рд╕реЗ рдЙрдиреНрд╣реЗрдВ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ред рдФрд░ рдЕрдЧрд░ рд╣рдо рдЙрдиреНрд╣реЗрдВ рдХреБрдЫ рд╕рд╛рдордЧреНрд░реА рджреЗрдВрдЧреЗ, рддреЛ рд╡реЗ рдХрд╣реЗрдВрдЧреЗ рдХрд┐ рд╣рдорд╛рд░реЗ рдЦреЛрдЬ рдЗрдВрдЬрди рдХреБрдЫ рднреА рдЕрдиреБрдХреНрд░рдорд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред

рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ? рдмреЗрд╢рдХ, рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ HTML рджреЗрдВрдЧреЗред рд╣рд╛рде рд╕реЗ рдЙрддреНрдкрд╛рджрди рдХрд░рдирд╛ рд╕рд╛рдорд╛рдиреНрдп рдмрд╛рдд рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИ lua-resty-template.

OpenResty: NGINX рдХреЛ рдПрдХ рдкреВрд░реНрдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд░реНрд╡рд░ рдореЗрдВ рдмрджрд▓рдирд╛

рдЖрдкрдиреЗ рд╢рд╛рдпрдж рддреАрди рдбрд░рд╛рд╡рдиреЗ рдЕрдХреНрд╖рд░ рдУрдкреАрдПрдо рджреЗрдЦреЗ рд╣реЛрдВрдЧреЗред OpenResty рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреИрдХреЗрдЬ рдореИрдиреЗрдЬрд░ рдХреЗ рд╕рд╛рде рдЖрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрдк рд╡рд┐рднрд┐рдиреНрди рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, lua-resty-template. рдпрд╣ Django рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЗ рд╕рдорд╛рди рдПрдХ рд╕рд░рд▓ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдЗрдВрдЬрди рд╣реИред рд╡рд╣рд╛рдВ рдЖрдк рдХреЛрдб рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╡реЗрд░рд┐рдПрдмрд▓ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╕рдм рдХреБрдЫ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

OpenResty: NGINX рдХреЛ рдПрдХ рдкреВрд░реНрдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд░реНрд╡рд░ рдореЗрдВ рдмрджрд▓рдирд╛

рд╣рдордиреЗ рдбреЗрдЯрд╛ рд▓рд┐рдпрд╛ рдФрд░ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЛ рдлрд┐рд░ рд╕реЗ рджреЛ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЦреБрд╢ рд╣реИ, рдЙрд╕реЗ рдмрд┐рд▓реНрд▓рд┐рдпрд╛рдБ рдорд┐рд▓реАрдВред рдЪреВрдБрдХрд┐ рд╣рдордиреЗ рдЕрдиреБрд░реЛрдз рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд┐рдпрд╛, рдЙрдиреНрд╣реЗрдВ рдмрд┐рд▓реНрд▓реА рдХреЗ рдмрдЪреНрдЪреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд░ рд╕реАрд▓ рднреА рдкреНрд░рд╛рдкреНрдд рд╣реБрдИред рдЖрдк рдХрднреА рдирд╣реАрдВ рдЬрд╛рдирддреЗ, рд╢рд╛рдпрдж рд╡рд╣ рдмрд┐рд▓реНрдХреБрд▓ рдЗрд╕реА рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рдерд╛, рд▓реЗрдХрд┐рди рдЕрдкрдирд╛ рдЕрдиреБрд░реЛрдз рд╕рд╣реА рдврдВрдЧ рд╕реЗ рддреИрдпрд╛рд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛ред

рд╕рдм рдХреБрдЫ рдЕрдЪреНрдЫрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдЕрднреА рддрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдирд╣реАрдВ рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЪрд▓реЛ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХрд░рддреЗ рд╣реИрдВ. рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдПрдирдЬреАрдЖрдИрдПрдирдПрдХреНрд╕ рдУрдкрдирд░реЗрд╕реНрдЯреА рд╢рд░реНрддреЛрдВ рдореЗрдВ рдЕрдиреБрд░реЛрдз рдХреЛ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ:

  • рдкрд╣рд▓рд╛ рдЪрд░рдг - рдкрд╣реБрдБрдЪ, рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрднреА-рдЕрднреА рдЖрдпрд╛, рдФрд░ рд╣рдордиреЗ рдЙрд╕реЗ рд╣реЗрдбрд░, рдЖрдИрдкреА рдкрддреЗ рдФрд░ рдЕрдиреНрдп рдбреЗрдЯрд╛ рджреНрд╡рд╛рд░рд╛ рджреЗрдЦрд╛ред рдЕрдЧрд░ рд╣рдореЗрдВ рдпрд╣ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ рддреЛ рд╣рдо рдЗрд╕реЗ рддреБрд░рдВрдд рдХрд╛рдЯ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рдпрджрд┐ рд╣рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЕрдиреБрд░реЛрдз рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЗрд╕ рдЪрд░рдг рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдЖрд╕рд╛рдиреА рд╕реЗ рдХрд╛рдЯ рд╕рдХрддреЗ рд╣реИрдВред
  • рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛. рд╣рдо рдХреБрдЫ рдЕрдиреБрд░реЛрдз рдбреЗрдЯрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВред
  • рд╕рд╛рдордЧреНрд░реА. рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддрдХ рд╕рд╛рдордЧреНрд░реА рдкрд╣реБрдВрдЪрд╛рддреЗ рд╣реИрдВред
  • рд╣реЗрдбрд░ рдлрд╝рд┐рд▓реНрдЯрд░. рд╣рдо рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╢реАрд░реНрд╖рд▓реЗрдЦреЛрдВ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЕрдЧрд░ рд╣рдордиреЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ proxy_pass, рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рджреЗрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХреБрдЫ рд╣реЗрдбрд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред
  • рд╢рд░реАрд░ рдлрд╝рд┐рд▓реНрдЯрд░. рд╣рдо рд╢рд░реАрд░ рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ.
  • рд▓реЙрдЧ рдЗрди тАФ рд▓реЙрдЧрд┐рдВрдЧ. рдЖрдк рдЗрд▓рд╛рд╕реНрдЯрд┐рдХреНрд╕ рдЦреЛрдЬ рдореЗрдВ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЕрддрд┐рд░рд┐рдХреНрдд рдкрд░рдд рдХреЗ рд▓реЙрдЧ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред

рд╣рдорд╛рд░рд╛ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

OpenResty: NGINX рдХреЛ рдПрдХ рдкреВрд░реНрдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд░реНрд╡рд░ рдореЗрдВ рдмрджрд▓рдирд╛

рд╣рдо рдЗрд╕реЗ рдЙрд╕рдореЗрдВ рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗ location, рдЬрд┐рд╕рдХрд╛ рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдерд╛, рдФрд░ рд╡рд╣рд╛рдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдбрд╛рд▓рд╛ рдерд╛:

OpenResty: NGINX рдХреЛ рдПрдХ рдкреВрд░реНрдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд░реНрд╡рд░ рдореЗрдВ рдмрджрд▓рдирд╛

рд╣рдо рдпрд╣ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреБрдХреА рдЯреЛрдХрди рд╣реИред рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рд╣рдо рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдорд╛рдВрдЧрддреЗ рд╣реИрдВред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЪрд╛рд▓рд╛рдХ рд╣реИрдВ рдФрд░ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдХреБрдХреА рдЯреЛрдХрди рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЗрд╕реЗ Redis рдореЗрдВ рднреА рдбрд╛рд▓реЗрдВрдЧреЗ:

OpenResty: NGINX рдХреЛ рдПрдХ рдкреВрд░реНрдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд░реНрд╡рд░ рдореЗрдВ рдмрджрд▓рдирд╛

рд░реЗрдбрд┐рд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдХреЛрдб рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ рдФрд░ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рд╕реЗ рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИред рд╕рд╛рде рд╣реА, рдпрд╣рд╛рдВ рдФрд░ рд╡рд╣рд╛рдВ рд╕рднреА рдЗрдирдкреБрдЯ/рдЖрдЙрдЯрдкреБрдЯ рдЕрд╡рд░реБрджреНрдз рдирд╣реАрдВ рд╣реЛ рд░рд╣реЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХреЛрдб рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд▓рдЧрднрдЧ рдЧреАрд╡реЗрдВрдЯ рдХреА рддрд░рд╣, рд▓реЗрдХрд┐рди рдЕрдЪреНрдЫрд╛ рдХрд┐рдпрд╛ред

OpenResty: NGINX рдХреЛ рдПрдХ рдкреВрд░реНрдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд░реНрд╡рд░ рдореЗрдВ рдмрджрд▓рдирд╛

рдЖрдЗрдП рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╕реНрд╡рдпрдВ рдХрд░реЗрдВ:

OpenResty: NGINX рдХреЛ рдПрдХ рдкреВрд░реНрдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд░реНрд╡рд░ рдореЗрдВ рдмрджрд▓рдирд╛

рд╣рдо рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдореЗрдВ рдЕрдиреБрд░реЛрдз рдХрд╛ рдореБрдЦреНрдп рднрд╛рдЧ рдкрдврд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдо POST рддрд░реНрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЬрд╛рдБрдЪрддреЗ рд╣реИрдВ рдХрд┐ рд▓реЙрдЧрд┐рди рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рд╕рд╣реА рд╣реИрдВред рдпрджрд┐ рд╡реЗ рдЧрд▓рдд рд╣реИрдВ, рддреЛ рд╣рдо рдЖрдкрдХреЛ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рд▓рд┐рдП рдЪреБрдиреМрддреА рджреЗрддреЗ рд╣реИрдВред рдФрд░ рдпрджрд┐ рд╕рд╣реА рд╣реИ, рддреЛ Redis рдореЗрдВ рдЯреЛрдХрди рд▓рд┐рдЦреЗрдВ:

OpenResty: NGINX рдХреЛ рдПрдХ рдкреВрд░реНрдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд░реНрд╡рд░ рдореЗрдВ рдмрджрд▓рдирд╛

рдХреБрдХреА рд╕реЗрдЯ рдХрд░рдирд╛ рди рднреВрд▓реЗрдВ, рдпрд╣ рднреА рджреЛ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

OpenResty: NGINX рдХреЛ рдПрдХ рдкреВрд░реНрдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд░реНрд╡рд░ рдореЗрдВ рдмрджрд▓рдирд╛

рдЙрджрд╛рд╣рд░рдг рд╕рд░рд▓ рдФрд░ рдХрд╛рд▓реНрдкрдирд┐рдХ рд╣реИ. рдмреЗрд╢рдХ, рд╣рдо рдРрд╕реА рд╕реЗрд╡рд╛ рдирд╣реАрдВ рдмрдирд╛рдПрдВрдЧреЗ рдЬреЛ рд▓реЛрдЧреЛрдВ рдХреЛ рдмрд┐рд▓реНрд▓рд┐рдпрд╛рдБ рджрд┐рдЦрд╛рддреА рд╣реЛред рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдХреМрди рдЬрд╛рдирддрд╛ рд╣реИ. рддреЛ рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

  • рдиреНрдпреВрдирддрдо рдмреИрдХрдПрдВрдб. рдХрднреА-рдХрднреА рд╣рдореЗрдВ рдмреИрдХрдПрдВрдб рдкрд░ рдмрд╕ рдереЛрдбрд╝рд╛ рд╕рд╛ рдбреЗрдЯрд╛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ: рдХрд╣реАрдВ рд╣рдореЗрдВ рдПрдХ рддрд╛рд░реАрдЦ рдбрд╛рд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдХрд╣реАрдВ рд╣рдореЗрдВ рдПрдХ рд╕реВрдЪреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдмрддрд╛рдПрдВ рдХрд┐ рдЕрдм рд╕рд╛рдЗрдЯ рдкрд░ рдХрд┐рддрдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реИрдВ, рдПрдХ рдХрд╛рдЙрдВрдЯрд░ рдпрд╛ рдЖрдВрдХрдбрд╝реЗ рд╕рдВрд▓рдЧреНрди рдХрд░реЗрдВред рдХреБрдЫ рдЗрддрдирд╛ рдЫреЛрдЯрд╛. рдХреБрдЫ рдиреНрдпреВрдирддрдо рдЯреБрдХрдбрд╝реЗ рдмрд╣реБрдд рдЖрд╕рд╛рдиреА рд╕реЗ рдмрдирд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдЗрд╕реЗ рддреНрд╡рд░рд┐рдд, рдЖрд╕рд╛рди рдФрд░ рдмрдврд╝рд┐рдпрд╛ рдмрдирд╛ рджреЗрдЧрд╛.
  • рдбреЗрдЯрд╛ рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ. рдХрднреА-рдХрднреА рд╣рдо рдЕрдкрдиреЗ рдкреЗрдЬ рдореЗрдВ рд╡рд┐рдЬреНрдЮрд╛рдкрди рдПрдореНрдмреЗрдб рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдФрд░ рд╣рдореЗрдВ рдПрдкреАрдЖрдИ рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдпрд╣ рд╡рд┐рдЬреНрдЮрд╛рдкрди рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред рдпрд╣рд╛рдВ рдпреЗ рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ. рд╣рдо рдЕрдкрдиреЗ рдмреИрдХрдПрдВрдб рдХреЛ рд▓реЛрдб рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмреИрдард╛ рд╣реИ рдФрд░ рдХрдбрд╝реА рдореЗрд╣рдирдд рдХрд░ рд░рд╣рд╛ рд╣реИред рдЖрдк рдЗрд╕реЗ рдпрд╣рд╛рдБ рд╕реЗ рдЙрдард╛ рдХрд░ рдПрдХрддреНрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рдХреБрдЫ рдЬреЗрдПрд╕ рдХреЛ рдПрдХ рд╕рд╛рде рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛, рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЗрд╕реЗ рдЕрд▓рдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рджреЗрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХреБрдЫ рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
  • рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕ рдХреЗ рд▓рд┐рдП рдореБрдЦреМрдЯрд╛. рдпрд╣ рднреА рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдорд╛рдорд▓рд╛ рд╣реИ, рдореИрдВрдиреЗ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ред рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ рдЯреЗрдирдЬрд╝реЛрд░ рдореЗрдВ рдХрд╛рдо рдХрд┐рдпрд╛ рдерд╛, рдЬреЛ рдПрдХ рдХрдВрдкрдиреА рд╣реИ рдЬреЛ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ рдФрд░ рджреЗрд╢ рдХреА рд▓рдЧрднрдЧ рдЖрдзреА рдХрд╛рдиреВрдиреА рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЛ рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИред рд╣рдордиреЗ рдПрдХ рд╕реЗрд╡рд╛ рдмрдирд╛рдИ, рд╡рд╣рд╛рдВ рдПрдХ рд╣реА рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдИ рдЪреАрдЬреЗрдВ рдХреА рдЧрдИрдВ: рд░реВрдЯрд┐рдВрдЧ, рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдФрд░ рдмрд╣реБрдд рдХреБрдЫред
    OpenResty рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдкрдХреЗ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕реЗрдЬ рдХреЗ рд▓рд┐рдП рдЧреЛрдВрдж рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рд╣рд░ рдЪреАрдЬрд╝ рддрдХ рдПрдХрд▓ рдкрд╣реБрдВрдЪ рдФрд░ рдПрдХрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЪреВрдБрдХрд┐ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕реЗрдЬ рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдпрд╣рд╛рдБ Node.js, рдпрд╣рд╛рдБ PHP, рдпрд╣рд╛рдБ Python, рдпрд╣рд╛рдБ рдХреБрдЫ рдПрд░реНрд▓реИрдВрдЧ рдЪреАрдЬрд╝ рд╣реИ, рд╣рдо рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рд╣рд░ рдЬрдЧрд╣ рдПрдХ рд╣реА рдХреЛрдб рдХреЛ рджреЛрдмрд╛рд░рд╛ рдирд╣реАрдВ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, OpenResty рдХреЛ рд╕рд╛рдордиреЗ рдкреНрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

  • рд╕рд╛рдВрдЦреНрдпрд┐рдХреА рдФрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг. рдЖрдорддреМрд░ рдкрд░ рдПрдирдЬреАрдЖрдИрдПрдирдПрдХреНрд╕ рдкреНрд░рд╡реЗрд╢ рджреНрд╡рд╛рд░ рдкрд░ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рд╕рднреА рдЕрдиреБрд░реЛрдз рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реЛрддреЗ рд╣реИрдВред рдпрд╣ рдЗрд╕ рдЬрдЧрд╣ рдкрд░ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдЗрдХрдЯреНрдард╛ рдХрд░рдирд╛ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рдЖрдк рддреБрд░рдВрдд рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХреА рдЧрдгрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕реЗ рдХрд╣реАрдВ рдЕрдкрд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд▓рд╛рд╕реНрдЯрд┐рдХреНрд╕ рдЦреЛрдЬ, рд▓реЙрдЧрд╕реНрдЯреИрд╢, рдпрд╛ рдмрд╕ рдЗрд╕реЗ рд▓реЙрдЧ рдореЗрдВ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдХрд╣реАрдВ рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВред
  • рдмрд╣реБ-рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рдгрд╛рд▓рд┐рдпрд╛рдБ. рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдСрдирд▓рд╛рдЗрди рдЧреЗрдо рдмрдирд╛рдирд╛ рднреА рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИред рдЖрдЬ рдХреЗрдк рдЯрд╛рдЙрди рдореЗрдВ, рдЕрд▓реЗрдХреНрдЬреЗрдВрдбрд░ рдЧреНрд▓реИрдбрд┐рд╢ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдУрдкрдирд░реЗрд╕реНрдЯреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдорд▓реНрдЯреАрдкреНрд▓реЗрдпрд░ рдЧреЗрдо рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рдХреИрд╕реЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХрд┐рдпрд╛ рдЬрд╛рдПред
  • рдЕрдиреБрд░реЛрдз рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ (WAF). рдЖрдЬрдХрд▓ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдлрд╝рд╛рдпрд░рд╡реЙрд▓ рдмрдирд╛рдирд╛ рдлреИрд╢рдиреЗрдмрд▓ рд╣реИ; рдРрд╕реА рдХрдИ рд╕реЗрд╡рд╛рдПрдБ рд╣реИрдВ рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИрдВред OpenResty рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдЕрдкрдиреЗ рд▓рд┐рдП рдПрдХ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдлрд╝рд╛рдпрд░рд╡реЙрд▓ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рд░рд▓рддрд╛ рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░реЗрдЧрд╛ред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкрд╛рдпрдерди рд╣реИ, рддреЛ рдЖрдк рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ PHP рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЖрдкрдХреЗ рдЕрдВрджрд░ рдЗрдВрдЬреЗрдХреНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрдм рддрдХ рдХрд┐ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЖрдк рдЗрд╕реЗ рдХрдВрд╕реЛрд▓ рд╕реЗ рдХрд╣реАрдВ рднреА рдЙрддреНрдкрдиреНрди рди рдХрд░реЗрдВред рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ MySQL рдФрд░ Python рд╣реИрдВред рд╕рдВрднрд╡рддрдГ, рд╡реЗ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдЯреНрд░реИрд╡рд░реНрд╕рд▓ рдХрд░рдиреЗ рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдХреБрдЫ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдЖрдк рдЕрдЬреАрдм рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рддреБрд░рдВрдд рдФрд░ рд╕рд╕реНрддреЗ рдореЗрдВ рд╕рд╛рдордиреЗ рд╕реЗ рд╣реА рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
  • рд╕рдореБрджрд╛рдпред рдЪреВрдВрдХрд┐ OpenResty NGINX рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХрд╛ рдПрдХ рдмреЛрдирд╕ рд╣реИ - рдпрд╣ рдПрдирдЬреАрдЖрдИрдПрдирдПрдХреНрд╕ рд╕рдореБрджрд╛рдп. рдпрд╣ рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╣реИ, рдФрд░ рдЖрдкрдХреЗ рд╕рд╛рдордиреЗ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдПрдирдЬреАрдЖрдИрдПрдирдПрдХреНрд╕ рд╕рдореБрджрд╛рдп рджреНрд╡рд╛рд░рд╛ рдкрд╣рд▓реЗ рд╣реА рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИред

    рд▓реБрдЖ рдбреЗрд╡рд▓рдкрд░реНрд╕. рдХрд▓ рдореИрдВрдиреЗ рд╣рд╛рдИрд▓реЛрдб++ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рджрд┐рд╡рд╕ рдкрд░ рдЖрдП рд▓реЛрдЧреЛрдВ рд╕реЗ рдмрд╛рдд рдХреА рдФрд░ рд╕реБрдирд╛ рдХрд┐ рд▓реБрдЖ рдореЗрдВ рдХреЗрд╡рд▓ рдЯрд╛рд░рдирдЯреВрд▓ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ред рдпреЗ рд╕рдЪ рдирд╣реАрдВ рд╣реИ, рд▓реБрдЖ рдореЗрдВ рдмрд╣реБрдд рд╕реА рдмрд╛рддреЗрдВ рд▓рд┐рдЦреА рд╣реБрдИ рд╣реИрдВ. рдЙрджрд╛рд╣рд░рдг: OpenResty, Prosody XMPP рд╕рд░реНрд╡рд░, Love2D рдЧреЗрдо рдЗрдВрдЬрди, Warcraft рдФрд░ рдЕрдиреНрдп рдЬрдЧрд╣реЛрдВ рдкрд░ рд▓реБрдЖ рд╕реНрдХреНрд░рд┐рдкреНрдЯреЗрдбред рдмрд╣реБрдд рд╕рд╛рд░реЗ рд▓реБрдЖ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╣реИрдВ, рдЙрдирдХреЗ рдкрд╛рд╕ рдПрдХ рдмрдбрд╝рд╛ рдФрд░ рдЙрддреНрддрд░рджрд╛рдпреА рд╕рдореБрджрд╛рдп рд╣реИред рдореЗрд░реЗ рд╕рднреА рд▓реБрдЖ рдкреНрд░рд╢реНрди рдХреБрдЫ рд╣реА рдШрдВрдЯреЛрдВ рдореЗрдВ рд╣рд▓ рд╣реЛ рдЧрдПред рдЬрдм рдЖрдк рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА рдореЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рддреЛ рд╕рдЪрдореБрдЪ рдХреБрдЫ рд╣реА рдорд┐рдирдЯреЛрдВ рдХреЗ рднреАрддрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдФрд░ рдХреИрд╕реЗ, рдХреНрдпрд╛ рд╣реИред рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдРрд╕рд╛ рджрдпрд╛рд▓реБ, рдЖрдзреНрдпрд╛рддреНрдорд┐рдХ рд╕рдореБрджрд╛рдп рд╣рд░ рдЬрдЧрд╣ рдирд╣реАрдВ рд╣реИред
    OpenResty рдХреЗ рд▓рд┐рдП GitHub рд╣реИ, рдЬрд╣рд╛рдВ рдХреБрдЫ рдЯреВрдЯрд╛ рд╣реЛрдиреЗ рдкрд░ рдЖрдк рд╕рдорд╕реНрдпрд╛ рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВред Google рд╕рдореВрд╣ рдкрд░ рдПрдХ рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА рд╣реИ, рдЬрд╣рд╛рдВ рдЖрдк рд╕рд╛рдорд╛рдиреНрдп рдореБрджреНрджреЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЪреАрдиреА рднрд╛рд╖рд╛ рдореЗрдВ рдПрдХ рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА рд╣реИ - рдЖрдк рдХрднреА рдирд╣реАрдВ рдЬрд╛рдирддреЗ, рд╢рд╛рдпрдж рдЖрдк рдЕрдВрдЧреНрд░реЗрдЬреА рдирд╣реАрдВ рдмреЛрд▓рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдк рдЪреАрдиреА рдЬрд╛рдирддреЗ рд╣реИрдВред

рдкрд░рд┐рдгрд╛рдо

  • рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдореИрдВ рдпрд╣ рдмрддрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ рдХрд┐ OpenResty рд╡реЗрдм рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдврд╛рдВрдЪрд╛ рд╣реИред
  • рдЗрд╕рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХреЗ рд▓рд┐рдП рдХрдо рдмрд╛рдзрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдб рд╡реИрд╕рд╛ рд╣реА рд╣реИ рдЬреИрд╕рд╛ рд╣рдо рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рднрд╛рд╖рд╛ рдХрд╛рдлреА рд╕рд░рд▓ рдФрд░ рдиреНрдпреВрдирддрд░ рд╣реИред
  • рдпрд╣ рдХреЙрд▓рдмреИрдХ рдХреЗ рдмрд┐рдирд╛ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ I/O рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЛрдИ рдиреВрдбрд▓реНрд╕ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдХрднреА-рдХрднреА NodeJS рдореЗрдВ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред
  • рдЗрд╕рдХреА рддреИрдирд╛рддреА рдЖрд╕рд╛рди рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ рдореЙрдбреНрдпреВрд▓ рдФрд░ рд╣рдорд╛рд░реЗ рдХреЛрдб рдХреЗ рд╕рд╛рде рдПрдирдЬреАрдЖрдИрдПрдирдПрдХреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рд╕рдм рдХреБрдЫ рддреБрд░рдВрдд рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
  • рдмрдбрд╝рд╛ рдФрд░ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рд╕рдореБрджрд╛рдп.

рдореИрдВрдиреЗ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдирд╣реАрдВ рдмрддрд╛рдпрд╛ рдХрд┐ рд░рд╛рдЙрдЯрд┐рдВрдЧ рдХреИрд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИ, рдпрд╣ рдмрд╣реБрдд рд▓рдВрдмреА рдХрд╣рд╛рдиреА рдмрди рдЧрдИред

рдзрдиреНрдпрд╡рд╛рдж!


рд╡реНрд▓рд╛рджрд┐рдореАрд░ рдкреНрд░реЛрддрд╛рд╕реЛрд╡ - рдУрдкрдирд░реЗрд╕реНрдЯреА: рдПрдирдЬреАрдЖрдИрдПрдирдПрдХреНрд╕ рдХреЛ рдПрдХ рдкреВрд░реНрдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд░реНрд╡рд░ рдореЗрдВ рдмрджрд▓рдирд╛

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ