OpenResty: табдил додани NGINX ба сервери пурраи барномаҳо

OpenResty: табдил додани NGINX ба сервери пурраи барномаҳоМо боз стенограммаи маърузаи конференцияро чоп мекунем HighLoad++ 2016, ки 7-8 ноябри соли гузашта дар Сколковои назди Маскав баргузор шуд. Владимир Протасов Мефаҳмонад, ки чӣ тавр васеъ кардани функсияи NGINX бо OpenResty ва Lua.

Салом ба ҳама, номи ман Владимир Протасов, ман дар Parallels кор мекунам. Ман ба шумо каме дар бораи худам нақл мекунам. Ман чор се ҳиссаи ҳаёти худро барои навиштани код сарф мекунам. Ман ба маънои аслӣ барномасоз шудам: баъзан дар хобҳоям кодро мебинам. Чоряки ҳаёт рушди саноат, навиштани кодест, ки мустақиман ба истеҳсолот меравад. Рамзест, ки баъзеи шумо онро истифода мебаранд, аммо дарк намекунанд.

Пас шумо мефаҳмед, ки чӣ қадар бад буд. Вақте ки ман каме хурд будам, ба ман омада, ин базаҳои ду терабайтиро доданд. Ҳоло дар ин ҷо барои ҳама бори зиёд аст. Ман ба конфронсҳо рафтам ва пурсидам: "Бачаҳо, ба ман бигӯед, ки шумо маълумоти калон доред, ҳама чиз хуб аст? Шумо дар он ҷо чанд пойгоҳ доред? Онҳо ба ман ҷавоб доданд: "Мо 100 гигабайт дорем!" Ман гуфтам: "Аҷаб, 100 гигабайт!" Ва ман худ ба худ фикр мекардам, ки чеҳраи покери худро чӣ гуна бодиққат нигоҳ дорам. Шумо фикр мекунед, ҳа, бачаҳо хубанд ва пас шумо бармегардед ва бо ин базаҳои бисёртерабайтӣ кор мекунед. Ва ин - ҷавон будан. Оё шумо тасаввур карда метавонед, ки ин чӣ гуна зарба аст?

Ман зиёда аз 20 забони барномасозиро медонам. Ин чизест, ки ман бояд ҳангоми кор кардан фаҳмидам. Онҳо ба шумо кодро бо Erlang, C, C++, Lua, Python, Ruby ва чизи дигар медиҳанд ва шумо бояд ҳамаашро буред. Умуман, ба ман лозим омад. Шумораи аникро хисоб кардан мум-кин набуд, вале дар ку-чое тахминан 20 ракам гум шуд.

Азбаски ҳама ҳозир медонанд, ки параллелҳо чист ва мо чӣ кор мекунем, ман дар бораи он ки мо то чӣ андоза олӣ ҳастем ва чӣ кор мекунем, сӯҳбат намекунам. Ман танҳо ба шумо мегӯям, ки мо дар саросари ҷаҳон 13 офис дорем, беш аз 300 корманд, рушд дар Маскав, Таллин ва Малта дорем. Агар хоҳед, шумо метавонед онро бигиред ва ба Малта ҳаракат кунед, агар дар зимистон хунук бошад ва шумо бояд пуштро гарм кунед.

Махсусан, шӯъбаи мо бо Python 2 менависад. Мо дар тиҷорат ҳастем ва барои татбиқи технологияҳои муд вақт надорем, аз ин рӯ азоб мекашем. Мо Django-ро истифода мебарем, зеро он ҳама чизро дорад ва мо чизи нодаркорро гирифта, партофта будем. Инчунин MySQL, Redis ва NGINX. Мо инчунин бисьёр чизҳои ҷолиб дорем. Мо MongoDB дорем, мо харгӯшҳо медаванд, мо ҳама чизро дорем - аммо ин аз они ман нест ва ман ин корро намекунам.

OpenResty

Ман дар бораи худам гуфтам. Биёед бифаҳмем, ки ман имрӯз дар бораи чӣ гап мезанам:

  • OpenResty чист ва онро бо чӣ мехӯранд?
  • Чаро чархи дигарро аз нав ихтироъ кунем, вақте ки мо Python, NodeJS, PHP, Go ва дигар чизҳои аҷибе дорем, ки ҳама аз онҳо қаноатманданд?
  • Ва чанд мисол аз ҳаёт. Ба ман лозим омад, ки гузоришро бисёр буридам, зеро он ман 3,5 соатро гирифт, аз ин рӯ мисолҳо кам мешаванд.

OpenResty NGINX аст. Бо шарофати ӯ, мо як веб-сервери мукаммал дорем, ки хуб навишта шудааст ва зуд кор мекунад. Ман фикр мекунам, ки аксарияти мо NGINX-ро дар истеҳсолот истифода мебарем. Ҳамаи шумо медонед, ки ӯ зуд ва хуб аст. Онҳо дар он I/O-и синхронии сард сохтанд, аз ин рӯ ба мо лозим нест, ки чизеро давр занем, ҳамон тавре ки онҳо дар Python gevent кардаанд. Gevent олиҷаноб, олӣ аст, аммо агар шумо рамзи C нависед ва чизе хато кунад, пас бо Gevent шумо девонаворро ислоҳ мекунед. Ман таҷриба доштам: барои фаҳмидани он ки дар он ҷо чӣ хато шудааст, ду рӯзи тамом лозим шуд. Агар касе чанд ҳафта кофта намешуд, мушкилотро намеёфт, дар интернет менавишт ва Google онро намеёфт, мо комилан девона мешудем.

NGINX аллакай кэшкунӣ ва мундариҷаи статикиро дорад. Ба шумо лозим нест, ки дар бораи он ки чӣ гуна ин корро ба таври инсонӣ анҷом диҳед, ғамхорӣ кунед, то шумо дар ҷое суст нашавед, то тасвирҳоро дар ҷое гум накунед. Nginx барои ҷойгиркунӣ хеле қулай аст, ба шумо лозим нест, ки дар бораи он чизе ки гирифтан лозим аст, фикр кунед - WSGI, PHP-FPM, Gunicorn, Unicorn. Nginx насб карда шуд, ба маъмурон дода шуд, онҳо медонанд, ки чӣ тавр бо он кор кунанд. Nginx дархостҳоро ба таври сохторӣ коркард мекунад. Ман дар ин бора каме дертар гап мезанам. Хулоса, он марҳилае дорад, ки он танҳо дархостро қабул кард, вақте ки онро коркард кард ва вақте ки мундариҷаро ба корбар пешкаш кард.

Nginx олиҷаноб аст, аммо як мушкилот вуҷуд дорад: он ба қадри кофӣ чандир нест, ҳатто бо тамоми хусусиятҳои олие, ки бачаҳо ба конфигуратсия ворид карда шудаанд, сарфи назар аз он ки танзим карда мешавад. Ин қудрат кофӣ нест. Аз ин рӯ, бачаҳои Таобао, хеле пештар, ба назар чунин мерасад, ки ҳашт сол пеш Луаро дар он сохтаанд. Он чӣ медиҳад?

  • андоза. Он хурд аст. LuaJIT тақрибан 100-200 килобайт сарбории хотира ва ҳадди ақали иҷроишро медиҳад.
  • Суръат. Тарҷумони LuaJIT дар бисёр ҳолатҳо ба C наздик аст, дар баъзе ҳолатҳо аз Java мағлуб мешавад, дар дигар ҳолатҳо аз он бартарӣ дорад. Дар тӯли чанд вақт он ҳолати санъат, олитарин мураттиби JIT ҳисобида мешуд. Ҳоло онҳо сардтар ҳастанд, аммо онҳо хеле вазнинанд, масалан, ҳамон V8. Баъзе тарҷумонҳои JS ва Java HotSpot дар баъзе нуқтаҳо тезтаранд, аммо дар баъзе ҷойҳо онҳо то ҳол аз даст медиҳанд.
  • Омӯзиш осон. Агар шумо, бигӯед, пойгоҳи рамзи Perl дошта бошед ва шумо брон накунед, барномасозони Perl-ро намеёбед. Азбаски онҳо вуҷуд надоранд, ҳамаашон гирифта шуданд ва таълим додани онҳо тӯлонӣ ва душвор аст. Агар шумо хоҳед, ки барномасозонро барои чизи дигар, шумо инчунин метавонед онҳоро бозомӯзед ё пайдо кунед. Дар мавриди Луа, ҳама чиз оддӣ аст. Ҳар як наврас метавонад дар се рӯз Lua омӯзад. Барои фаҳмидани он ба ман тақрибан ду соат лозим шуд. Пас аз ду соат ман аллакай дар истеҳсолот код менависам. Такрибан баъди як хафта рост ба истехсолот рафту рафт.

Дар натиҷа, чунин ба назар мерасад:

OpenResty: табдил додани NGINX ба сервери пурраи барномаҳо

Дар ин ҷо бисёр аст. OpenResty як қатор модулҳоро ҷамъ кардааст, ҳам модулҳо ва ҳам муҳаррикҳо. Ва шумо ҳама чизро омода доред - ҷойгир ва кор.

намунаи

Лирика басанда аст, биёед ба рамз гузарем. Инак як каме Салом Ҷаҳон:

OpenResty: табдил додани NGINX ба сервери пурраи барномаҳо

Чӣ ҳаст? Ин макони Engins аст. Мо хавотир нашавем, мо масири худамонро наменависем, ягон чизи тайёрро намегирем - мо онро аллакай дар NGINX дорем, мо зиндагии хуб ва танбал дорем.

content_by_lua_block блокест, ки мегӯяд, ки мо мундариҷаро бо истифода аз скрипти Lua пешкаш мекунем. Мо тағирёбандаи Engins -ро мегирем remote_addr ва онро гузоред string.format. Ин ҳамон тавре аст sprintf, танҳо дар Луа, танҳо дуруст. Ва мо онро ба муштарӣ медиҳем.

Дар натиҷа, он чунин хоҳад буд:

OpenResty: табдил додани NGINX ба сервери пурраи барномаҳо

Аммо биёед ба ҷаҳони воқеӣ баргардем. Ҳеҷ кас Hello World-ро дар истеҳсолот ҷойгир намекунад. Аризаи мо одатан ба пойгоҳи додаҳо ё ҷои дигар меравад ва аксар вақт интизори посух мешавад.

OpenResty: табдил додани NGINX ба сервери пурраи барномаҳо

Ӯ танҳо нишаста интизор аст. Ин хеле хуб нест. Вақте ки 100.000 XNUMX корбар меоянд, барои мо хеле душвор аст. Пас, биёед як барномаи оддиро ҳамчун мисол истифода барем. Мо расмҳоро, масалан, гурбаҳоро ҷустуҷӯ хоҳем кард. Аммо мо танҳо ҷустуҷӯ намекунем, мо калимаҳои калидиро васеъ мекунем ва агар корбар "гурбачахо" -ро ҷустуҷӯ кунад, мо гурбаҳо, гурбаҳои мӯй ва ғайраҳоро пайдо мекунем. Аввалан, мо бояд маълумоти дархостро дар пушти сар ба даст орем. Чунин ба назар мерасад:

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, ба осонӣ, дар ду сатр сериализатсия кунед. Мо Content-Type медиҳем, мо JSON медиҳем.

Аммо як мушкилӣ вуҷуд дорад: корбар намехоҳад JSON-ро хонад. Мо бояд таҳиягарони пешрафтаро ҷалб кунем. Баъзан мо дар аввал ин корро кардан намехоҳем. Ва мутахассисони SEO мегӯянд, ки агар мо дар ҷустуҷӯи тасвирҳо бошем, ин барои онҳо муҳим нест. Ва агар мо ба онҳо мундариҷа диҳем, онҳо хоҳанд гуфт, ки системаҳои ҷустуҷӯии мо ҳеҷ чизро индексатсия намекунанд.

Дар ин бора чӣ бояд кард? Албатта, мо ба корбар HTML медиҳем. Бо дастӣ тавлид кардан comme il faut нест, бинобар ин мо мехоҳем қолибҳоро истифода барем. Барои ин китобхона мавҷуд аст lua-resty-template.

OpenResty: табдил додани NGINX ба сервери пурраи барномаҳо

Шумо эҳтимол се ҳарфи даҳшатноки OPM-ро дидаед. OpenResty бо менеҷери бастаи худ меояд, ки тавассути он шумо метавонед як қатор модулҳои гуногунро насб кунед, аз ҷумла, lua-resty-template. Ин як муҳаррики оддии шаблон аст, ки ба қолибҳои Django монанд аст. Дар он ҷо шумо метавонед код нависед ва ивазкунии тағирёбандаро иҷро кунед.

Дар натиҷа, ҳама чиз чунин хоҳад буд:

OpenResty: табдил додани NGINX ба сервери пурраи барномаҳо

Мо маълумотро гирифтем ва қолабро боз дар ду сатр додем. Истифодабаранда хушбахт аст, ӯ гурбаҳоро гирифтааст. Азбаски мо дархостро васеъ кардем, ӯ низ барои гурбачахо мӯҳри курку гирифт. Шумо ҳеҷ гоҳ намедонед, шояд ӯ маҳз ҳаминро меҷуст, аммо дархости худро дуруст таҳия карда натавонист.

Ҳама чиз хуб аст, аммо мо дар ҳоли таҳия ҳастем ва ҳоло намехоҳем онро ба корбарон нишон диҳем. Биёед иҷозатро иҷро кунем. Барои ин, биёед бубинем, ки NGINX дархостро бо шартҳои OpenResty чӣ гуна иҷро мекунад:

  • Марҳилаи аввал - дастрасии, вақте ки корбар нав омад, ва мо ба ӯ аз рӯи сарлавҳаҳо, суроғаи IP ва дигар маълумотҳо назар кардем. Агар ба мо маъқул набошад, мо фавран онро бурида метавонем. Ин метавонад барои иҷозат истифода шавад ё агар мо дархостҳои зиёде гирем, мо метавонем онҳоро дар ин марҳила ба осонӣ қатъ кунем.
  • нав кунед. Мо баъзе маълумоти дархостро аз нав менависем.
  • мазмуни. Мо мундариҷаро ба корбар мерасонем.
  • филтри сарлавҳаҳо. Мо сарлавҳаҳои ҷавобро иваз мекунем. Агар мо истифода мебарем proxy_pass, мо метавонем баъзе сарлавҳаҳоро пеш аз додани он ба корбар дубора нависем.
  • филтри бадан. Мо метавонем баданро тағир диҳем.
  • цӯлачӯб — дарахтбурй. Шумо метавонед гузоришҳоро дар elasticsearch бе қабати иловагӣ нависед.

Иҷозатномаи мо чунин хоҳад буд:

OpenResty: табдил додани NGINX ба сервери пурраи барномаҳо

Мо инро ба он илова мекунем location, ки мо қаблан тавсиф кардем ва рамзи зеринро дар он ҷо гузоред:

OpenResty: табдил додани NGINX ба сервери пурраи барномаҳо

Мо мебинем, ки оё мо аломати куки дорем. Дар акси ҳол, мо иҷозат мепурсем. Истифодабарандагон маккоранд ва метавонанд тахмин кунанд, ки онҳо бояд аломати кукиро насб кунанд. Аз ин рӯ, мо онро дар Redis низ мегузорем:

OpenResty: табдил додани NGINX ба сервери пурраи барномаҳо

Рамзи кор бо Redis хеле содда буда, аз дигар забонҳо фарқ надорад. Дар айни замон, ҳама вуруд/баромад дар ин ҷо ва он ҷо баста намешавад. Агар шумо рамзи синхронӣ нависед, он асинхронӣ кор мекунад. Қариб мисли gevent, аммо хуб кор кард.

OpenResty: табдил додани NGINX ба сервери пурраи барномаҳо

Биёед худи иҷозатро иҷро кунем:

OpenResty: табдил додани NGINX ба сервери пурраи барномаҳо

Мо мегӯем, ки матни дархостро хондан лозим аст. Мо далелҳои POST мегирем ва дурустии логин ва паролро тафтиш мекунем. Агар онҳо нодуруст бошанд, мо шуморо барои иҷозат додан даъват мекунем. Ва агар дуруст бошад, пас аломатро дар Redis нависед:

OpenResty: табдил додани NGINX ба сервери пурраи барномаҳо

Фаромӯш накунед, ки кукиро насб кунед, ин инчунин дар ду сатр анҷом дода мешавад:

OpenResty: табдил додани NGINX ба сервери пурраи барномаҳо

Мисол оддӣ ва тахминӣ аст. Албатта, мо хидмате намекунем, ки ба одамон гурба нишон диҳад. Аммо кй моро медонад. Пас, биёед дар бораи он ки дар истехсолот чй корхоро ичро кардан мумкин аст.

  • Бозгашти минималистӣ. Баъзан ба мо лозим меояд, ки танҳо каме маълумотро ба пуштибонӣ бароварем: дар ҷое мо бояд сана ворид кунем, дар ҷое мо бояд рӯйхатро намоиш диҳем, бигӯем, ки ҳоло дар сайт чанд корбар ҳастанд, ҳисобкунак ё омор замима мекунем. Чизи хеле хурд. Баъзе қисмҳои минималиро хеле осон кардан мумкин аст. Ин онро зуд, осон ва олӣ мегардонад.
  • Коркарди пешакии маълумот. Баъзан мо мехоҳем таблиғро дар саҳифаи худ ҷойгир кунем ва мо ин таблиғро бо истифода аз дархостҳои API қабул мекунем. Дар ин ҷо ин корро кардан хеле осон аст. Пушти худро, ки аллакай нишаста кор мекунад, бор намекунем. Шумо метавонед онро дар ин ҷо бигиред ва ҷамъ кунед. Мо метавонем якчанд JS-ро якҷоя кунем ё баръакс, онро ҷудо кунем ва пеш аз додани он ба корбар чизеро пешакӣ коркард кунем.
  • Фасад барои микросервис. Ин ҳам як ҳолати хеле хуб аст, ман онро амалӣ кардам. Пеш аз он, ман дар Tenzor, ширкате кор мекардам, ки бо ҳисоботи электронӣ сарукор дорад ва тақрибан нисфи шахсони ҳуқуқии кишварро ҳисобот медиҳад. Мо хидмат таъсис додем, дар он ҷо корҳо бо ҳамон механизм анҷом дода шуданд: масир, авторизатсия ва ғайра.
    OpenResty метавонад ҳамчун ширеше барои хидматрасониҳои хурди шумо истифода шавад, ки дастрасии ягона ба ҳама чиз ва интерфейси ягонаро таъмин мекунад. Азбаски микросервисҳоро тавре навиштан мумкин аст, ки шумо дар ин ҷо Node.js, дар ин ҷо PHP, дар ин ҷо Python, ягон чизи Erlang дар ин ҷо дошта бошед, мо мефаҳмем, ки мо намехоҳем ҳамон кодро дар ҳама ҷо дубора нависем. Аз ин рӯ, OpenResty метавонад ба пеш пайваст карда шавад.

  • Статистика ва таҳлил. Одатан NGINX дар даромадгоҳ ҷойгир аст ва ҳама дархостҳо тавассути он мегузаранд. Маҳз дар ин ҷой барои ҷамъоварӣ хеле қулай аст. Шумо метавонед дарҳол чизеро ҳисоб кунед ва онро дар ҷое бор кунед, масалан, Elasticsearch, Logstash, ё танҳо онро ба гузориш нависед ва сипас онро ба ҷое фиристед.
  • Системаҳои сершумори корбар. Масалан, бозиҳои онлайнӣ низ хеле хуб барои сохтани. Имрӯз дар Кейптаун Александр Гладиш дар бораи чӣ гуна зуд прототипи бозии мултипликатори бо истифода аз OpenResty сӯҳбат мекунад.
  • Филтри дархост (WAF). Дар айни замон сохтани ҳама гуна брандмауэрҳои веб-барномаҳо мӯд шудааст; хидматҳои зиёде мавҷуданд, ки онҳоро пешкаш мекунанд. Бо истифода аз OpenResty, шумо метавонед худро як девори веб-барнома созед, ки дархостҳоро мувофиқи талаботи шумо содда ва ба осонӣ филтр мекунад. Агар шумо Python дошта бошед, пас шумо мефаҳмед, ки PHP бешубҳа ба шумо ворид карда намешавад, ба шарте ки шумо онро дар ҳама ҷо аз консол паҳн накунед. Шумо медонед, ки шумо MySQL ва Python доред. Эҳтимол, онҳо метавонанд кӯшиш кунанд, ки ягон намуди гузариши директорияро анҷом диҳанд ва ба пойгоҳи додаҳо чизе ворид кунанд. Аз ин рӯ, шумо метавонед дархостҳои аҷибро зуд ва арзон дар пеш филтр кунед.
  • Ҷамъият. Азбаски OpenResty дар NGINX сохта шудааст, он як бонус дорад - ин Ҷамъияти NGINX. Ин хеле калон аст ва як қисми муносиби саволҳое, ки шумо дар аввал доред, аллакай аз ҷониби ҷомеаи NGINX ҳал карда шудаанд.

    Таҳиягарони Lua. Дирӯз ман бо бачаҳое, ки ба рӯзи омӯзишии HighLoad++ омада буданд, сӯҳбат кардам ва шунидам, ки дар Луа танҳо Tarantool навишта шудааст. Ин дуруст нест, дар Луа бисьёр чизхо навишта шудаанд. Намунаҳо: OpenResty, сервери Prosody XMPP, муҳаррики бозии Love2D, Луа скрипт дар Warcraft ва дигар ҷойҳо. Бисёре аз таҳиягарони Lua ҳастанд, онҳо ҷомеаи калон ва ҷавобгӯ доранд. Ҳама саволҳои ман Луа дар давоми чанд соат ҳал карда шуданд. Вақте ки шумо ба рӯйхати почтаи электронӣ менависед, аслан дар тӯли чанд дақиқа аллакай як қатор ҷавобҳо мавҷуданд, ки чӣ гуна ва чӣ гуна, чӣ чизеро тавсиф мекунанд. Ин зӯр аст. Мутаассифона, чунин ҷомеаи рӯҳонӣ на дар ҳама ҷо вуҷуд дорад.
    GitHub барои OpenResty мавҷуд аст, ки дар он шумо метавонед дар сурати вайрон шудани чизе масъала кушоед. Дар Google Groups рӯйхати почтаи электронӣ мавҷуд аст, ки дар он шумо метавонед масъалаҳои умумиро муҳокима кунед, рӯйхати паёмҳо бо забони чинӣ мавҷуд аст - шумо ҳеҷ гоҳ намедонед, шояд шумо забони англисиро намедонед, аммо шумо хитоиро медонед.

Натиҷаҳо

  • Умедворам, ки ман тавонистам бигӯям, ки OpenResty чаҳорчӯбаи хеле қулайест, ки барои веб таҳия шудааст.
  • Он барои воридшавӣ монеаи кам дорад, зеро рамз ба он чизе ки мо менависем, шабоҳат дорад, забон хеле содда ва минималистист.
  • Он вуруд / баромади асинхронӣ бидуни зангҳои бозпасро таъмин мекунад, мо ҳеҷ гуна угро нахоҳем дошт, ба монанди мо баъзан дар NodeJS навишта метавонем.
  • Он ҷойгиркунии осон дорад, зеро ба мо танҳо NGINX бо модули зарурӣ ва рамзи мо лозим аст ва ҳама чиз фавран кор мекунад.
  • Ҷамъияти калон ва ҷавобгӯ.

Ман ба таври муфассал нагуфтам, ки масир чӣ гуна сурат мегирад, ин як ҳикояи хеле тӯлонӣ шуд.

Ташаккур барои таваҷҷӯҳатон!


Владимир Протасов - OpenResty: табдил додани NGINX ба сервери пурраи барномаҳо

Манбаъ: will.com

Илова Эзоҳ