Apache və Nginx. Bir zəncirlə bağlanır

Apache və Nginx kombinasiyası Timeweb-də necə həyata keçirilir

Bir çox şirkətlər üçün Nginx + Apache + PHP çox tipik və ümumi birləşmədir və Timeweb də istisna deyil. Bununla belə, onun necə həyata keçirildiyini dəqiq başa düşmək maraqlı və faydalı ola bilər.

Apache və Nginx. Bir zəncirlə bağlanır

Belə birləşmənin istifadəsi, əlbəttə ki, müştərilərimizin ehtiyacları ilə diktə edilir. Həm Nginx, həm də Apache xüsusi rol oynayır, hər biri müəyyən bir problemi həll edir.

Əsas parametrlər Apache Apache-nin özünün konfiqurasiya fayllarında yerinə yetirilir və müştəri saytları üçün parametrlər vasitəsilə həyata keçirilir .htaccess faylı. .htaccess müştərinin veb serverin qaydalarını və davranışını müstəqil şəkildə konfiqurasiya edə bildiyi konfiqurasiya faylıdır. Bu ayar xüsusi olaraq onun saytına tətbiq olunacaq. Məsələn, Apache funksionallığı sayəsində istifadəçilər eyni PHP versiyası daxilində iş rejimini mod_php-dən mod_cgi-yə dəyişə bilərlər; yönləndirmələr, SEO üçün optimallaşdırma, rahat URL, PHP üçün bəzi məhdudiyyətlər qura bilərsiniz.

Nginx trafiki Apache-yə yönləndirmək üçün proxy server kimi və statik məzmuna xidmət etmək üçün veb server kimi istifadə olunur. Biz həmçinin Nginx üçün istifadəçilərimizin məlumatlarını qorumağa, məsələn, giriş hüquqlarını ayırmağa imkan verən təhlükəsizlik modulları hazırlamışıq.

Təsəvvür edək ki, istifadəçi müştərimizin veb saytına daxil olur. Əvvəlcə istifadəçi statik məzmuna xidmət edən Nginx-ə daxil olur. Bu dərhal baş verir. Sonra, PHP-nin yüklənməsinə gəldikdə, Nginx sorğunu Apache-yə yönləndirir. Apache isə PHP ilə birlikdə artıq dinamik məzmun yaradır.

Timeweb-də Apache & Nginx paketinin xüsusiyyətləri

Virtual hostinqimiz Apache və Nginx üçün 2 əsas əməliyyat sxemini həyata keçirir: Paylaşılan və Həsr edilmişdir.

Paylaşılan sxem

Bu sxem əksər istifadəçilər üçün istifadə olunur. O, sadəliyi və resurs intensivliyi ilə seçilir: Paylaşılan sxem daha az resurs istifadə edir, buna görə də onun tarifi daha ucuzdur. Bu sxemə görə, server bütün istifadəçi sorğularına və bir neçə Apache nümunəsinə xidmət etməyə imkan verən bir Nginx-i idarə edir.

Paylaşılan sxem uzun müddətdir ki, təkmilləşir: tədricən çatışmazlıqları düzəldirik. Rahat olaraq, mənbə kodunu dəyişdirməyə ehtiyac olmadan edilə bilər.

Apache və Nginx. Bir zəncirlə bağlanır
Paylaşılan sxem

Xüsusi sxem

Dedicated daha çox resurs tələb edir, ona görə də onun tarifi müştərilər üçün daha bahadır. Dedicated sxemdə hər bir müştəri öz ayrıca Apache-ni alır. Buradakı resurslar müştəri üçün qorunur, onlar müstəsna olaraq ayrılır. Necə işləyir: Serverdə PHP-nin bir neçə versiyası var. Biz 5.3, 5.4, 5.6, 7.1, 7.2, 7.3, 7.4 versiyalarını dəstəkləyirik. Beləliklə, PHP-nin hər bir versiyası üçün öz Apache işə salınır.

Apache və Nginx. Bir zəncirlə bağlanır
Xüsusi sxem

Təhlükəsiz zona. Nginx-də zonaların qurulması

Əvvəllər Nginx üçün biz çoxlu paylaşılan yaddaş zonalarından (zonalardan) istifadə edirdik - hər domen üçün bir server bloku. Bu quraşdırma çoxlu resurs tələb edir, çünki hər bir sayt üçün ayrıca zona yaradılır. Bununla belə, Nginx parametrlərində əksər saytlar eyni tipdədir, ona görə də modulda xəritə direktivlərinin istifadəsi sayəsində onlar bir zonada yerləşdirilə bilər. ngx_http_map_moduluyazışmaları təyin etməyə imkan verən . Məsələn, dəyişənləri təqdim etməli olduğumuz zona şablonumuz var: sayta gedən yol, PHP versiyası, istifadəçi. Beləliklə, Nginx konfiqurasiyasının yenidən oxunması, yəni yenidən yüklənməsi sürətləndirildi.

Bu konfiqurasiya RAM resurslarını xeyli qənaət etdi və Nginx-i sürətləndirdi.

Yenidən yükləmə işləməyəcək!

Paylaşılan sxemdə veb-sayt parametrlərini dəyişdirərkən Apache-ni yenidən yükləmək ehtiyacından xilas olduq. Əvvəllər bir müştəri domen əlavə etmək və ya PHP versiyasını dəyişmək istəyəndə Apache-nin məcburi yenidən yüklənməsi tələb olunurdu ki, bu da cavabların gecikməsinə və saytın işinə mənfi təsir göstərməsinə səbəb olurdu.

Dinamik konfiqurasiyalar yaratmaqla yenidən yükləmələrdən xilas olduq. sayəsində mpm-itk (Apache modulu), hər bir proses ayrı bir istifadəçi kimi işləyir ki, bu da təhlükəsizlik səviyyəsini artırır. Bu üsul istifadəçi və onun document_root haqqında məlumatları Nginx-dən Apache2-yə ötürməyə imkan verir. Beləliklə, Apache sayt konfiqurasiyalarını ehtiva etmir, onları dinamik şəkildə qəbul edir və yenidən yükləmələr artıq tələb olunmur.

Apache və Nginx. Bir zəncirlə bağlanır
Paylaşılan sxem konfiqurasiyası

Bəs Docker?

Bir çox şirkət konteyner əsaslı sistemə keçdi. Timeweb hazırda belə bir keçidin mümkünlüyünü nəzərdən keçirir. Təbii ki, hər bir qərarın müsbət və mənfi tərəfləri var.

Danılmaz üstünlüklərlə yanaşı, konteyner sistemi istifadəçiyə daha az resurs təqdim edir. Timeweb-də təsvir edilən hosting sxemi sayəsində istifadəçinin RAM-da heç bir məhdudiyyəti yoxdur. Konteynerdəkindən daha çox resurs alır. Bundan əlavə, istifadəçi daha çox Apache modulunu yükləyə bilər.

Timeweb təxminən 500 veb-sayta güc verir. Biz böyük məsuliyyət götürürük və mürəkkəb arxitekturada ani, əsassız dəyişikliklər etmirik. Apache və Nginx birləşməsi etibarlı və zamanla sınaqdan keçirilmişdir. Biz də öz növbəmizdə unikal konfiqurasiyalar vasitəsilə maksimum performansa nail olmağa çalışırıq.

Çox sayda saytın yüksək keyfiyyətli və sürətli işləməsi üçün şablon və Apache və Nginx-in dinamik konfiqurasiyasından istifadə etməlisiniz. Bu, çoxlu sayda oxşar serverləri asanlıqla və tez idarə etməyə imkan verir.

Mənbə: www.habr.com

Добавить комментарий