Apache & Nginx. Нэг хэлхээгээр холбогдсон

Apache & Nginx хослолыг Timeweb дээр хэрхэн хэрэгжүүлдэг

Олон компаниудын хувьд Nginx + Apache + PHP нь маш энгийн бөгөөд нийтлэг хослол бөгөөд Timeweb нь үл хамаарах зүйл биш юм. Гэсэн хэдий ч үүнийг хэрхэн хэрэгжүүлж байгааг ойлгох нь сонирхолтой бөгөөд ашигтай байх болно.

Apache & Nginx. Нэг хэлхээгээр холбогдсон

Ийм хослолыг ашиглах нь мэдээжийн хэрэг манай үйлчлүүлэгчдийн хэрэгцээ шаардлагаас хамаарна. Nginx болон Apache хоёулаа онцгой үүрэг гүйцэтгэдэг бөгөөд тус бүр нь тодорхой асуудлыг шийддэг.

үндсэн тохиргоо Апачи Apache-ийн тохиргооны файлуудад хийгдэх ба үйлчлүүлэгчийн сайтуудын тохиргоонууд дамжуулан хийгддэг .htaccess файл. .htaccess нь үйлчлүүлэгч вэб серверийн дүрэм, үйлдлийг бие даан тохируулах боломжтой тохиргооны файл юм. Энэ тохиргоо нь түүний сайтад тусгайлан хэрэгжинэ. Жишээлбэл, Apache функцийн ачаар хэрэглэгчид ижил PHP хувилбар доторх үйлдлийн горимыг mod_php-ээс mod_cgi болгон өөрчлөх боломжтой; Та дахин чиглүүлэлт, SEO-ийн оновчлол, тохиромжтой URL, PHP-ийн зарим хязгаарлалт зэргийг тохируулах боломжтой.

Nginx Apache руу урсгалыг дахин чиглүүлэх прокси сервер болон статик контентоор үйлчлэх вэб сервер болгон ашигладаг. Мөн бид Nginx-д зориулсан аюулгүй байдлын модулиудыг боловсруулсан бөгөөд энэ нь хэрэглэгчдийнхээ мэдээллийг хамгаалах, тухайлбал, нэвтрэх эрхийг тусгаарлах боломжийг олгодог.

Хэрэглэгч манай үйлчлүүлэгчийн вэбсайтад зочилдог гэж төсөөлөөд үз дээ. Эхлээд хэрэглэгч статик контентоор үйлчилдэг Nginx руу очно. Энэ нь шууд тохиолддог. Дараа нь PHP-г ачаалах үед Nginx хүсэлтийг Apache руу дамжуулдаг. Apache нь PHP-тэй хамт аль хэдийн динамик контент үүсгэдэг.

Timeweb дээрх Apache & Nginx багцын онцлогууд

Манай виртуал хостинг нь Apache & Nginx-д зориулсан 2 үндсэн үйлдлийн схемийг хэрэгжүүлдэг: Хуваалцсан, зориулав.

Хуваалцсан схем

Энэ схемийг ихэнх хэрэглэгчид ашигладаг. Энэ нь энгийн бөгөөд нөөцийн нягтралаараа ялгагдана: Хуваалцсан схем нь бага нөөц ашигладаг тул тариф нь хямд байдаг. Энэ схемийн дагуу сервер нь нэг Nginx-ийг ажиллуулдаг бөгөөд энэ нь бүх хэрэглэгчийн хүсэлт болон Apache-ийн хэд хэдэн тохиолдлуудад үйлчлэх боломжийг олгодог.

Хуваалцсан схем удаан хугацаанд сайжирч байна: аажмаар бид дутагдлаа зассан. Тохиромжтой, үүнийг эх кодыг өөрчлөх шаардлагагүйгээр хийж болно.

Apache & Nginx. Нэг хэлхээгээр холбогдсон
Хуваалцсан схем

Зориулалтын схем

Зориулалт нь илүү их нөөц шаарддаг тул түүний тариф нь үйлчлүүлэгчдэд илүү үнэтэй байдаг. Зориулалтын схемд үйлчлүүлэгч бүр өөр өөрийн Apache-г авдаг. Энд байгаа нөөцийг үйлчлүүлэгчид зориулж нөөцөлсөн бөгөөд тэдгээрийг зөвхөн хуваарилдаг. Энэ нь хэрхэн ажилладаг вэ: Сервер дээр PHP-ийн хэд хэдэн хувилбар байдаг. Бид 5.3, 5.4, 5.6, 7.1, 7.2, 7.3, 7.4 хувилбаруудыг дэмждэг. Тиймээс PHP-ийн хувилбар бүрийн хувьд өөрийн Apache-г эхлүүлсэн.

Apache & Nginx. Нэг хэлхээгээр холбогдсон
Зориулалтын схем

Аюулгүй бүс. Nginx дээр бүсүүдийг тохируулж байна

Өмнө нь Nginx-ийн хувьд бид олон хуваалцсан санах ойн бүс (бүс) ашигладаг байсан - нэг домайн бүрт нэг сервер блок. Сайт бүрт тусдаа бүс бий болсон тул энэ тохиргоо нь маш их нөөц шаарддаг. Гэсэн хэдий ч Nginx тохиргоонд ихэнх сайтууд ижил төрлийн байдаг тул модулийн газрын зургийн удирдамжийг ашигласнаар тэдгээрийг нэг бүсэд байрлуулж болно. ngx_http_map_модуль, энэ нь танд захидал харилцааг зааж өгөх боломжийг олгодог. Жишээлбэл, бид хувьсагчдыг оруулах ёстой бүсийн загвартай: сайт руу орох зам, PHP хувилбар, хэрэглэгч. Тиймээс Nginx тохиргоог дахин унших, өөрөөр хэлбэл дахин ачаалах ажлыг хурдасгасан.

Энэ тохиргоо нь RAM нөөцийг ихээхэн хэмнэж, Nginx-ийг хурдасгасан.

Дахин ачаалах боломжгүй!

Хуваалцсан схемд бид вэбсайтын тохиргоог өөрчлөх үед Apache-г дахин ачаалах шаардлагаас салсан. Өмнө нь нэг үйлчлүүлэгч домэйн нэмэх эсвэл PHP хувилбарыг өөрчлөхийг хүсэх үед Apache-г заавал дахин ачаалах шаардлагатай байсан бөгөөд энэ нь хариу саатал, сайтын гүйцэтгэлд сөргөөр нөлөөлсөн.

Бид динамик тохиргоог бий болгосноор дахин ачааллаас салсан. Баярлалаа mpm-itk (Apache модуль), процесс бүр нь тусдаа хэрэглэгч болж ажилладаг бөгөөд энэ нь аюулгүй байдлын түвшинг нэмэгдүүлдэг. Энэ арга нь Nginx-ээс Apache2 руу хэрэглэгчийн болон түүний document_root-ийн талаарх мэдээллийг дамжуулах боломжийг олгоно. Тиймээс Apache нь сайтын тохиргоог агуулаагүй бөгөөд тэдгээрийг динамик байдлаар хүлээн авдаг бөгөөд дахин ачаалах шаардлагагүй болсон.

Apache & Nginx. Нэг хэлхээгээр холбогдсон
Хуваалцсан схемийн тохиргоо

Docker-ийн талаар юу хэлэх вэ?

Олон компаниуд чингэлэгт суурилсан системд шилжсэн. Timeweb одоогоор ийм шилжилт хийх боломжийг судалж байна. Мэдээжийн хэрэг шийдвэр болгонд сайн муу тал бий.

Маргаашгүй давуу талуудын зэрэгцээ контейнер систем нь хэрэглэгчдэд бага нөөцөөр хангадаг. Timeweb дээр тайлбарласан байршуулах схемийн ачаар хэрэглэгч RAM-д ямар ч хязгаарлалт байхгүй. Энэ нь савнаас илүү их нөөцийг хүлээн авдаг. Нэмж дурдахад, хэрэглэгч илүү олон Apache модулийг ачаалсан байж болно.

Timeweb нь 500 орчим вэб сайтыг ажиллуулдаг. Бид маш их хариуцлага хүлээдэг бөгөөд нарийн төвөгтэй архитектурт яаралтай, үндэслэлгүй өөрчлөлтүүдийг хийдэггүй. Apache & Nginx хослол нь найдвартай бөгөөд цаг хугацаагаар шалгагдсан. Бид эргээд өвөрмөц тохиргоогоор дамжуулан хамгийн их гүйцэтгэлд хүрэхийг хичээдэг.

Олон тооны сайтуудыг өндөр чанартай, хурдан ажиллуулахын тулд та Apache болон Nginx-ийн загвар, динамик тохиргоог ашиглах хэрэгтэй. Энэ нь олон тооны ижил төстэй серверүүдийг хялбар бөгөөд хурдан удирдах боломжийг танд олгоно.

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

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