Apache va Nginx. Bir zanjir bilan bog'langan

Apache va Nginx kombinatsiyasi Timeweb-da qanday amalga oshiriladi

Ko'pgina kompaniyalar uchun Nginx + Apache + PHP juda odatiy va keng tarqalgan kombinatsiyadir va Timeweb bundan mustasno emas. Biroq, uning qanday amalga oshirilishini tushunish qiziqarli va foydali bo'lishi mumkin.

Apache va Nginx. Bir zanjir bilan bog'langan

Bunday kombinatsiyadan foydalanish, albatta, mijozlarimizning ehtiyojlariga bog'liq. Nginx ham, Apache ham alohida rol o'ynaydi, ularning har biri muayyan muammoni hal qiladi.

Asosiy Sozlamalar Apache Apache-ning konfiguratsiya fayllarida amalga oshiriladi va mijoz saytlari uchun sozlamalar orqali amalga oshiriladi .htaccess fayli. .htaccess - bu mijoz veb-server qoidalari va xatti-harakatlarini mustaqil ravishda sozlashi mumkin bo'lgan konfiguratsiya fayli. Bu sozlama ayniqsa uning saytiga qo'llaniladi. Masalan, Apache funksiyasi tufayli foydalanuvchilar bir xil PHP versiyasida ish rejimini mod_php dan mod_cgi ga o'zgartirishi mumkin; qayta yo'naltirishlar, SEO uchun optimallashtirish, qulay URL, PHP uchun ba'zi cheklovlarni o'rnatishingiz mumkin.

nginx trafikni Apache-ga yo'naltirish uchun proksi-server va statik tarkibga xizmat ko'rsatish uchun veb-server sifatida ishlatiladi. Shuningdek, biz Nginx uchun xavfsizlik modullarini ishlab chiqdik, ular bizga foydalanuvchilarning ma'lumotlarini himoya qilish imkonini beradi, masalan, kirish huquqlarini ajratish.

Tasavvur qilaylik, foydalanuvchi mijozimizning veb-saytiga tashrif buyuradi. Birinchidan, foydalanuvchi statik tarkibga xizmat qiluvchi Nginx-ga kiradi. Bu bir zumda sodir bo'ladi. Keyin, PHP-ni yuklash haqida gap ketganda, Nginx so'rovni Apache-ga yuboradi. Va Apache PHP bilan birgalikda allaqachon dinamik tarkibni yaratadi.

Timeweb-dagi Apache & Nginx to'plamining xususiyatlari

Bizning virtual hostingimiz Apache va Nginx uchun ikkita asosiy operatsion sxemani amalga oshiradi: Umumiy va bag'ishlangan.

Umumiy sxema

Ushbu sxema ko'pchilik foydalanuvchilar uchun qo'llaniladi. U o'zining soddaligi va resurs zichligi bilan ajralib turadi: Umumiy sxema kamroq resurslardan foydalanadi, shuning uchun uning tarifi arzonroq. Ushbu sxemaga ko'ra, server bitta Nginx-ni boshqaradi, bu unga barcha foydalanuvchi so'rovlariga va bir nechta Apache misollariga xizmat ko'rsatish imkonini beradi.

Birgalikda sxema uzoq vaqtdan beri takomillashib bormoqda: bosqichma-bosqich biz kamchiliklarni tuzatdik. Qulaylik bilan, u manba kodini o'zgartirishga hojat qoldirmasdan amalga oshirilishi mumkin.

Apache va Nginx. Bir zanjir bilan bog'langan
Umumiy sxema

Maxsus sxema

Dedicated ko'proq resurslarni talab qiladi, shuning uchun uning tarifi mijozlar uchun qimmatroq. Dedicated sxemada har bir mijoz o'zining alohida Apache-ni oladi. Bu erda resurslar mijoz uchun ajratilgan, ular faqat ajratilgan. U qanday ishlaydi: Serverda PHP ning bir nechta versiyalari mavjud. Biz 5.3, 5.4, 5.6, 7.1, 7.2, 7.3, 7.4 versiyalarini qo'llab-quvvatlaymiz. Shunday qilib, PHP ning har bir versiyasi uchun o'z Apache ishga tushiriladi.

Apache va Nginx. Bir zanjir bilan bog'langan
Maxsus sxema

Xavfsiz zona. Nginx-da zonalarni o'rnatish

Ilgari Nginx uchun biz ko'plab umumiy xotira zonalaridan (zonalar) foydalanganmiz - har bir domen uchun bitta server bloki. Ushbu o'rnatish juda ko'p resurslarni talab qiladi, chunki har bir sayt uchun alohida zona yaratilgan. Biroq, Nginx sozlamalarida ko'pchilik saytlar bir xil turdagi, shuning uchun modulda xarita ko'rsatmalaridan foydalanish tufayli ularni bitta zonaga joylashtirish mumkin. ngx_http_map_module, bu sizga yozishmalarni belgilash imkonini beradi. Masalan, bizda zona shabloniga ega bo'lib, unda biz o'zgaruvchilarni taqdim etishimiz kerak: saytga yo'l, PHP versiyasi, foydalanuvchi. Shunday qilib, Nginx konfiguratsiyasini qayta o'qish, ya'ni qayta yuklash tezlashdi.

Ushbu konfiguratsiya RAM resurslarini sezilarli darajada tejaydi va Nginx tezligini oshirdi.

Qayta yuklash ishlamaydi!

Umumiy sxemada biz veb-sayt sozlamalarini o'zgartirganda Apache-ni qayta yuklash zaruratidan xalos bo'ldik. Ilgari, bitta mijoz domen qo'shmoqchi yoki PHP versiyasini o'zgartirmoqchi bo'lganida, Apache-ni majburiy qayta yuklash talab qilingan, bu javoblarning kechikishiga olib keldi va sayt ishiga salbiy ta'sir ko'rsatdi.

Biz dinamik konfiguratsiyalarni yaratish orqali qayta yuklashdan xalos bo'ldik. Rahmat mpm-itk (Apache moduli), har bir jarayon alohida foydalanuvchi sifatida ishlaydi, bu esa xavfsizlik darajasini oshiradi. Bu usul foydalanuvchi va uning document_root haqidagi ma'lumotlarini Nginx-dan Apache2-ga o'tkazish imkonini beradi. Shunday qilib, Apache sayt konfiguratsiyasini o'z ichiga olmaydi, u ularni dinamik ravishda qabul qiladi va endi qayta yuklash talab qilinmaydi.

Apache va Nginx. Bir zanjir bilan bog'langan
Umumiy sxema konfiguratsiyasi

Docker-chi?

Ko'pgina kompaniyalar konteynerga asoslangan tizimga o'tdilar. Timeweb hozirda bunday o'tish imkoniyatini ko'rib chiqmoqda. Albatta, har bir qarorning ijobiy va salbiy tomonlari bor.

Shubhasiz afzalliklar bilan bir qatorda, konteyner tizimi foydalanuvchini kamroq resurslar bilan ta'minlaydi. Timeweb-da, tavsiflangan xosting sxemasi tufayli foydalanuvchi RAMda hech qanday cheklovga ega emas. U konteynerga qaraganda ko'proq resurslarni oladi. Bundan tashqari, foydalanuvchi ko'proq Apache modullariga ega bo'lishi mumkin.

Timeweb 500 000 ga yaqin veb-saytlarga quvvat beradi. Biz katta mas'uliyatni o'z zimmamizga olamiz va murakkab arxitekturaga bir zumda, asossiz o'zgarishlar kiritmaymiz. Apache va Nginx kombinatsiyasi ishonchli va vaqt sinovidan o'tgan. Biz, o'z navbatida, noyob konfiguratsiyalar orqali maksimal ishlashga erishishga harakat qilamiz.

Ko'p sonli saytlarning yuqori sifatli va tezkor ishlashi uchun siz Apache va Nginx shablonlari va dinamik konfiguratsiyasidan foydalanishingiz kerak. Bu sizga ko'p sonli o'xshash serverlarni osongina va tez boshqarish imkonini beradi.

Manba: www.habr.com

a Izoh qo'shish