OpenResty: NGINX-ийг бүрэн хэмжээний програмын сервер болгон хувиргах

OpenResty: NGINX-ийг бүрэн хэмжээний програмын сервер болгон хувиргахБид хурлын илтгэлийн бичлэгийг дахин нийтэлж байна Өндөр ачаалал ++ Өнгөрсөн оны арваннэгдүгээр сарын 2016-7-нд Москвагийн ойролцоох Сколковод болсон 8. Владимир Протасов OpenResty болон Lua ашиглан NGINX функцийг хэрхэн өргөтгөх талаар өгүүлдэг.

Бүгдээрээ сайн уу, намайг Владимир Протасов гэдэг, би Parallels-д ажилладаг. Би өөрийнхөө тухай бага зэрэг хэлье. Би амьдралынхаа дөрөвний гурвыг код бичихэд зарцуулдаг. Би шууд утгаараа программист болсон: Би заримдаа зүүдэндээ код хардаг. Амьдралын дөрөвний нэг нь аж үйлдвэрийн хөгжил, шууд үйлдвэрлэл рүү ордог код бичдэг. Та нарын зарим нь ашигладаг мөртлөө мэддэггүй код бичээрэй.

Энэ нь ямар муу байсныг танд мэдэгдэхийн тулд. Бага байхдаа би орж ирээд энэ хоёр терабайт мэдээллийн санг надад өгсөн. Энэ нь одоо бүх хүнд зориулагдсан юм. Би чуулганд очоод: "Залуус аа, надад хэлээч, та том өгөгдөлтэй юу, бүх зүйл сайхан байна уу? Та тэнд хэдэн баазтай вэ? Тэд надад: "Бидэнд 100 гигабайт байна!" Би: "Сайхан, 100 гигабайт!" Тэгээд би дотроо покер нүүрээ хэрхэн цэвэрхэн аврах вэ гэж бодсон. Та залуусыг дажгүй гэж бодоод буцаж ирээд олон терабайтын мэдээллийн баазтай танилцана. Мөн энэ нь бага нас юм. Энэ нь ямар хит болохыг та төсөөлж байна уу?

Би 20 гаруй програмчлалын хэл мэддэг. Үүнийг би ажлын явцад олж мэдэх ёстой байсан. Тэд танд Erlang, C, C++, Lua, Python, Ruby, өөр ямар нэг зүйлээр код өгдөг бөгөөд та бүгдийг нь хасах хэрэгтэй. Ерөнхийдөө би тэгэх ёстой байсан. Яг нарийн тоо гаргах боломжгүй байсан ч хаа нэгтээ 20 орчим тоо алдагдсан.

Энд байгаа хүн бүр Parallels гэж юу болох, бидний юу хийдэг талаар мэддэг учраас би бид ямар сайхан, юу хийдэг талаар ярихгүй. Бид дэлхий даяар 13 оффистой, 300 гаруй ажилтантай, Москва, Таллин, Мальтад хөгжил дэвшилтэй гэдгээ л хэлье. Хүсвэл өвөл хүйтэн, нуруугаа дулаацуулах шаардлагатай бол Мальт руу аваад нүүж болно.

Тодруулбал, манай хэлтэс Python 2 дээр бичдэг. Бид бизнес эрхэлдэг, загварлаг технологи нэвтрүүлэх цаг байхгүй тул бид зовж байна. Бидэнд Django байгаа, учир нь түүнд бүх зүйл байгаа, бид илүүдлийг нь аваад хаясан. Мөн MySQL, Redis болон NGINX. Бидэнд бас өөр олон сайхан зүйлс бий. Бидэнд MongoDB байгаа, туулайнууд гүйдэг, бидэнд юу ч байхгүй, гэхдээ энэ нь минийх биш, би үүнийг хийдэггүй.

OpenResty

Би өөрийнхөө тухай хэлсэн. Өнөөдөр би юу ярихаа харцгаая:

  • OpenResty гэж юу вэ, юугаар хооллодог вэ?
  • Бидэнд Python, NodeJS, PHP, Go болон хүн бүрийн сэтгэл хангалуун байдаг бусад гайхалтай зүйлс байхад яагаад дугуйг шинээр зохион бүтээх ёстой гэж?
  • Мөн бодит амьдралын цөөн хэдэн жишээ. Тайланг 3,5 цаг авсан болохоор маш их хасах хэрэгтэй болсон тул жишээ цөөн байх болно.

OpenResty бол NGINX юм. Түүний ачаар бид бүрэн хэмжээний вэб сервертэй болсон бөгөөд энэ нь сайн бичигдсэн, хурдан ажилладаг. Бидний ихэнх нь NGINX-ийг үйлдвэрлэлд ашигладаг гэж би бодож байна. Түүнийг хурдан бөгөөд дажгүй гэдгийг та бүгд мэднэ. Тэд үүн дотор гайхалтай синхрон оролт / гаралтыг хийсэн тул бид Python дээр gevent-ийг эргүүлсэнтэй адил ямар нэг зүйлийг эргүүлэх шаардлагагүй. Gevent гайхалтай, гайхалтай, гэхдээ хэрэв та C код бичээд, gevent-д ямар нэг зүйл буруу болвол та үүнийг дибаг хийхэд галзуурах болно. Надад туршлага байсан: тэнд юу болсныг ойлгохын тулд бүтэн хоёр өдөр зарцуулсан. Хэрвээ хэн нэгэн өмнө нь хэдэн долоо хоног ухаагүй, асуудлаа олж, интернетэд бичээд, Google үүнийг олоогүй бол бид бүрэн галзуурсан байх байсан.

NGINX нь кэш болон статик контентыг аль хэдийн хийдэг. Та хаа нэгтээ удаашрахгүйн тулд, хаа нэгтээ тайлбарлагчаа алдахгүйн тулд үүнийг хэрхэн яаж хийх талаар санаа зовох хэрэггүй болно. Nginx нь байрлуулахад маш тохиромжтой, та юу авахаа бодох шаардлагагүй - WSGI, PHP-FPM, Gunicorn, Unicorn. Nginx суулгасан, админуудад өгсөн, тэд түүнтэй хэрхэн ажиллахаа мэддэг. Nginx нь хүсэлтийг бүтэцтэй байдлаар боловсруулдаг. Би энэ талаар бага зэрэг дараа ярих болно. Товчхондоо, тэр хүсэлтийг дөнгөж хүлээж авсан, боловсруулалт хийж, хэрэглэгчдэд контент өгөх үе шаттай.

Nginx бол дажгүй, гэхдээ нэг асуудал бий: энэ нь тохируулах боломжтой хэдий ч залуусын оруулсан бүх гайхалтай боломжуудтай ч хангалттай уян хатан биш юм. Энэ хүч хангалттай биш. Тийм учраас нэг удаа Таобаогийн залуус XNUMX жилийн өмнө Луаг бүтээж байсан гэж би бодож байна. Тэр юу өгөх вэ?

  • хэмжээ. Энэ нь жижиг юм. LuaJIT нь хаа нэгтээ 100-200 килобайт санах ой, хамгийн бага гүйцэтгэлийг өгдөг.
  • Хурд. LuaJIT орчуулагч нь олон тохиолдолд С-тэй ойролцоо байдаг, зарим тохиолдолд Java-д хожигдож, зарим тохиолдолд гүйцэж түрүүлдэг. Хэсэг хугацаанд энэ нь орчин үеийн, хамгийн гайхалтай JIT хөрвүүлэгч гэж тооцогддог. Одоо илүү сэрүүн байдаг, гэхдээ тэдгээр нь маш хүнд, жишээлбэл, ижил V8. Зарим JS орчуулагч болон Java HotSpot зарим үед илүү хурдан байдаг ч зарим үед алддаг.
  • Сурахад хялбар. Хэрэв танд Perl кодын бааз байгаа ч захиалгаа өгөөгүй бол Perl програмистыг олохгүй. Тэд байхгүй учраас бүгдийг нь аваад явсан, тэдэнд зааж сургах нь урт бөгөөд хэцүү байдаг. Хэрэв та өөр зүйлээр програмистуудыг хүсч байвал тэдгээрийг дахин сургах эсвэл олох шаардлагатай байж магадгүй юм. Луагийн хувьд бүх зүйл энгийн байдаг. Луаг XNUMX хоногийн дотор ямар ч бага хүүхэд сурч болно. Үүнийг ойлгоход хоёр цаг орчим хугацаа зарцуулсан. Хоёр цагийн дараа би аль хэдийн үйлдвэрлэл дээр код бичиж байсан. Долоо хоног орчмын дараа тэр шууд үйлдвэрлэл рүүгээ явчихлаа.

Үүний үр дүнд дараах байдалтай байна.

OpenResty: NGINX-ийг бүрэн хэмжээний програмын сервер болгон хувиргах

Энд зөндөө байна. OpenResty нь luash болон моторын аль алинд нь олон тооны модулиудыг угсарсан. Мөн та бүх зүйл бэлэн байна - байрлуулж, ажиллаж байна.

жишээ

Дууны үг хангалттай, код руугаа орцгооё. Энд бяцхан Hello World байна:

OpenResty: NGINX-ийг бүрэн хэмжээний програмын сервер болгон хувиргах

Юу байна? Энэ бол хөдөлгүүрийн байршил юм. Бид санаа зовохгүй байна, бид өөрсдийн чиглүүлээ бичдэггүй, бэлэн нэгийг нь авдаггүй - бид үүнийг NGINX-д аль хэдийн суулгасан, бид сайн, залхуу амьдардаг.

content_by_lua_block нь бид Lua скрипт ашиглан контентоор үйлчилж байна гэсэн блок юм. Бид хөдөлгүүрийн хувьсагчийг авдаг remote_addr болон дотор нь шургуул string.format. Энэ нь адилхан sprintf, зөвхөн Луа хэлээр, зөвхөн зөв. Тэгээд бид үүнийг үйлчлүүлэгчид өгдөг.

Үүний үр дүнд энэ нь дараах байдлаар харагдах болно.

OpenResty: NGINX-ийг бүрэн хэмжээний програмын сервер болгон хувиргах

Гэхдээ бодит ертөнц рүү буцах. Үйлдвэрлэлд хэн ч Hello World-г ашигладаггүй. Манай аппликейшн нь ихэвчлэн мэдээллийн сан эсвэл өөр газар очдог бөгөөд ихэнх тохиолдолд хариу хүлээж байдаг.

OpenResty: NGINX-ийг бүрэн хэмжээний програмын сервер болгон хувиргах

Зүгээр л суугаад хүлээж байна. Энэ нь тийм ч сайн биш юм. 100.000 хэрэглэгч ирэхэд бидэнд маш хэцүү байдаг. Тиймээс энгийн программыг жишээ болгон авч үзье. Бид зураг, жишээлбэл, муур хайх болно. Зөвхөн бид зөвхөн хайгаад зогсохгүй, түлхүүр үгсийг өргөжүүлэх бөгөөд хэрэв хэрэглэгч "зулзага" гэж хайсан бол бид муур, сэвсгэр гэх мэт зүйлийг олох болно. Эхлээд бид хүсэлтийн өгөгдлийг backend дээр авах хэрэгтэй. Энэ нь дараах байдалтай харагдаж байна.

OpenResty: NGINX-ийг бүрэн хэмжээний програмын сервер болгон хувиргах

Хоёр мөр нь GET параметрүүдийг сонгох боломжийг танд олгоно, ямар ч хүндрэл байхгүй. Дараа нь бид жишээлбэл, ердийн SQL асуулга ашиглан түлхүүр үг, өргөтгөл бүхий хүснэгт бүхий мэдээллийн сангаас энэ мэдээллийг авдаг. Бүх зүйл энгийн. Энэ нь дараах байдалтай харагдаж байна.

OpenResty: NGINX-ийг бүрэн хэмжээний програмын сервер болгон хувиргах

Бид номын санг холбодог resty.mysql, бид аль хэдийн иж бүрдэлд байгаа. Бид юу ч суулгах шаардлагагүй, бүх зүйл бэлэн болсон. Хэрхэн холбогдож, SQL асуулга хийхийг зааж өгнө үү:

OpenResty: NGINX-ийг бүрэн хэмжээний програмын сервер болгон хувиргах

Энэ нь бага зэрэг аймшигтай, гэхдээ энэ нь ажилладаг. Энд 10 нь хязгаар юм. Бид 10 пянз сугалж, залхуу, илүү харуулахыг хүсэхгүй байна. SQL дээр би хязгаарыг мартсан.

Дараа нь бид бүх асуултын зургийг олдог. Бид олон тооны хүсэлтийг цуглуулж, Луа нэртэй хүснэгтийг бөглөнө 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 хүсэлтээр авдаг. Үүнийг энд хийхэд маш хялбар байдаг. Бид аль хэдийн шаргуу ажиллаж байгаа backend-ээ ачаалахгүй. Та эндээс аваад, цуглуулж болно. Бид ямар нэг JS-г хэлбэржүүлж, эсвэл эсрэгээрээ ямар нэг зүйлийг хэрэглэгчдэд өгөхөөс өмнө урьдчилан боловсруулж болно.
  • Микро үйлчилгээний фасад. Энэ ч бас их сайн хэрэг, би хэрэгжүүлсэн. Би үүнээс өмнө тус улсын нийт хуулийн этгээдийн тал орчим хувийг тайлагнадаг цахим тайлангийн “Тэнзор” компанид ажиллаж байсан. Бид үйлчилгээ хийсэн, тэнд олон зүйлийг ижил механизм ашиглан хийдэг: чиглүүлэлт, зөвшөөрөл гэх мэт.
    OpenResty-ийг бүх зүйлд ганцхан хандах, нэг интерфейсээр хангахын тулд таны микро үйлчилгээний цавуу болгон ашиглаж болно. Микро үйлчилгээг энд Node.js, танд PHP, энд Python, энд Erlang гэсэн зүйл байна, бид хаа сайгүй ижил кодыг дахин бичихийг хүсэхгүй байна гэдгийг ойлгож байна. Тиймээс OpenResty-г урд хэсэгт нь холбож болно.

  • Статистик ба аналитик. Ихэвчлэн NGINX үүдэнд байдаг бөгөөд бүх хүсэлтүүд түүгээр дамждаг. Энэ нь цуглуулахад маш тохиромжтой газар юм. Та ямар нэг зүйлийг нэн даруй тооцоолж, хаа нэгтээ хаях боломжтой, жишээлбэл, ижил Elasticsearch, Logstash, эсвэл зүгээр л бүртгэл рүү бичээд дараа нь хаа нэгтээ илгээх боломжтой.
  • Олон хэрэглэгчийн системүүд. Жишээ нь, онлайн тоглоомууд бас хийх нь маш сайн байдаг. Өнөөдөр Кейптаун хотод Александр Гладиш танд OpenResty ашиглан олон тоглогчийн тоглоомыг хэрхэн хурдан загварчлахыг танд хэлэх болно.
  • Хүсэлтийн шүүлтүүр (WAF). Одоо бүх төрлийн вэб програмын галт хана хийх нь моод болж, тэдгээрийг хангадаг олон үйлчилгээ байдаг. OpenResty-ийн тусламжтайгаар та вэб програмын галт ханыг өөрөө хийх боломжтой бөгөөд энэ нь хүсэлтийг таны шаардлагын дагуу хялбар бөгөөд хялбархан шүүдэг. Хэрэв танд Python байгаа бол мэдээжийн хэрэг та үүнийг консолоос хаана ч суулгаагүй л бол PHP-г танд оруулахгүй гэдгийг та ойлгож байна. Та MySQL болон Python-той гэдгээ мэднэ. Магадгүй, тэд энд ямар нэгэн лавлахаар аялж, мэдээллийн санд ямар нэгэн зүйл оруулахыг оролдож болно. Тиймээс та дүлий хүсэлтийг урд талд нь хурдан бөгөөд хямдхан шүүж болно.
  • Олон нийтийн. OpenResty нь NGINX дээр суурилсан тул урамшуулалтай - энэ нь NGINX нийгэмлэг. Энэ нь маш том бөгөөд эхлээд танд асуух олон асуултанд NGINX нийгэмлэг аль хэдийн хариулсан байна.

    Луа хөгжүүлэгчид. Өчигдөр HighLoad ++ сургалтын өдөрлөгт ирсэн залуустай ярилцаж байгаад Луа хэлээр зөвхөн Тарантоол гэж бичдэг гэж сонслоо. Энэ бол тийм биш, Луа хэлээр маш олон зүйл бичсэн байдаг. Жишээ нь: OpenResty, Prosody XMPP сервер, Love2D тоглоомын хөдөлгүүр, Луа нь Warcraft болон бусад газарт скрипттэй. Маш олон Луа хөгжүүлэгчид байдаг бөгөөд тэд өргөн цар хүрээтэй, мэдрэмжтэй нийгэмлэгтэй. Миний Луагийн бүх асуултад хэдхэн цагийн дотор хариулсан. Та шуудангийн жагсаалт руу бичихэд хэдхэн минутын дотор аль хэдийн олон тооны хариултууд гарч ирэх бөгөөд тэд юу, яаж, юу болохыг тайлбарладаг. Гайхалтай. Харамсалтай нь ийм сайхан сэтгэлтэй хамт олон хаа сайгүй байдаггүй.
    OpenResty нь GitHub-тэй бөгөөд ямар нэг зүйл эвдэрсэн тохиолдолд асуудлыг нээх боломжтой. Google Бүлгүүд дээр ерөнхий асуудлаа ярилцаж болох захидлын жагсаалт байдаг, хятад хэл дээрх захидлын жагсаалт байдаг - та хэзээ ч мэдэхгүй, магадгүй та англиар ярьдаггүй, гэхдээ та хятад хэлний мэдлэгтэй.

Үр дүн

  • OpenResty бол маш тохиромжтой вэб фреймворк гэдгийг хэлж чадсан гэж найдаж байна.
  • Энэ нь нэвтрэх босго бага, код нь бидний бичсэнтэй төстэй, хэл нь маш энгийн бөгөөд минималист юм.
  • Энэ нь буцааж залгахгүйгээр асинхрон оролтыг хангадаг бөгөөд бид заримдаа NodeJS дээр бичиж чаддаг тул гоймон байхгүй болно.
  • Үүнийг ашиглахад хялбар байдаг, учир нь бидэнд зөвхөн зөв модуль болон кодтой NGINX хэрэгтэй бөгөөд бүх зүйл шууд ажилладаг.
  • Том, мэдрэмжтэй нийгэмлэг.

Чиглүүлэлт хэрхэн хийгддэгийг би дэлгэрэнгүй хэлээгүй, энэ нь маш урт түүх болсон.

Таны анхаарлын төвд баярлалаа!


Владимир Протасов - OpenResty: NGINX-ийг бүрэн хэмжээний програмын сервер болгон хувиргах

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх