Cum este implementată legătura Apache & Nginx în Timeweb
Pentru multe companii, combinația Nginx + Apache + PHP este foarte comună și răspândită, iar Timeweb nu face excepție. Cu toate acestea, a înțelege cum este implementată poate fi curios și util.

Utilizarea unei astfel de combinații este, desigur, dictată de nevoile clienților noștri. Atât Nginx cât și Apache joacă un rol special, fiecare îndeplinind o anumită sarcină.
Setările principale Apache se efectuează în fișierele de configurare ale Apache-ului în sine, iar setările pentru site-urile clienților se realizează prin fișierul .htaccess. .htaccess este un fișier de configurare în care clientul poate, de sine stătător, să configureze regulile și comportamentul serverului web. Această configurare se va referi specific la site-ul său. De exemplu, datorită funcționalității Apache, utilizatorii pot schimba modul de lucru în cadrul aceleași versiuni PHP de la mod_php la mod_cgi; se pot configura redirecționări, optimizări pentru SEO, URL-uri prietenoase, unele limite pentru PHP.
Nginx este utilizat ca proxy pentru redirecționarea traficului către Apache și ca server web pentru livrarea conținutului static. De asemenea, pentru Nginx am dezvoltat module de securitate care permit protejarea datelor utilizatorilor noștri, de exemplu, separarea drepturilor de acces.
Să ne imaginăm că un utilizator accesează site-ul clientului nostru. Mai întâi, utilizatorul ajunge la Nginx, care livra conținutul static. Aceasta se întâmplă instantaneu. Apoi, când este vorba de încărcarea PHP, Nginx redirecționează cererea către Apache. Iar Apache, împreună cu PHP, generează conținut dinamic.
Caracteristicile legăturii Apache & Nginx în Timeweb
Pe găzduirea noastră virtuală sunt implementate 2 scheme principale de funcționare pentru Apache & Nginx: Shared și Dedicated.
Schema Shared
Această schemă este utilizată de majoritatea utilizatorilor. Se caracterizează prin simplitate și consum redus de resurse: schema Shared folosește mai puține resurse, așa că tariful său este mai mic. Conform acestei scheme, pe server este activ un singur Nginx, care permite gestionarea tuturor cererilor utilizatorilor, și mai multe instanțe Apache.
Schema Shared a fost perfecționată pe o perioadă lungă: treptat, am corectat defectele. Este convenabil că se poate realiza fără a fi necesară modificarea codului sursă.

schema Shared
Schema Dedicated
Dedicated necesită mai multe resurse, așa că tariful său este mai mare pentru clienți. În schema Dedicated, pentru fiecare client se ridică un Apache separat. Resursele sunt rezervate exclusiv pentru client. Cum funcționează: pe server există mai multe versiuni PHP. Susținem versiunile 5.3, 5.4, 5.6, 7.1, 7.2, 7.3, 7.4. Astfel, pentru fiecare versiune PHP se lansează un Apache propriu.

schema Dedicated
Zona sigură. Configurarea zonelor în Nginx
Anterior, pentru Nginx foloseam multe zone de memorie partajată (zone) - un bloc server pentru fiecare domeniu. Această configurare necesită multe resurse, deoarece pentru fiecare site se creează o zonă separată. Totuși, în setările Nginx, majoritatea site-urilor sunt asemănătoare, prin urmare reușim să le plasăm într-o singură zonă datorită utilizării directivelor map în modul ngx_http_map_module, care permit stabilirea corespondențelor. De exemplu, avem un șablon de zonă în care trebuie să furnizăm variabile: calea către site, versiunea PHP, utilizatorul. Astfel, a fost accelerat reîncărcarea configurației Nginx, adică reload.
O astfel de configurație a economisit considerabil resursele de memorie RAM și a accelerat funcționarea Nginx.
Reloadul nu va trece!
În schema Shared, ne-am eliberat de necesitatea reîncărcării (reload) Apache-ului la modificările din setările site-urilor. Anterior, când un client dorea să adauge un domeniu sau să schimbe versiunea PHP, era necesară o reîncărcare obligatorie a Apache-ului, ceea ce ducea la întârzieri în răspunsuri și afectează negativ performanța site-urilor.
Ne-am eliberat de reload-uri prin crearea de configurații dinamice. Datorită (modul Apache), fiecare proces rulează de la un utilizator separat, ceea ce crește nivelul de securitate. Această metodă permite transmiterea datelor despre utilizator și document_root-ul său din Nginx în Apache2. Astfel, Apache nu conține configurații ale site-urilor, le obține dinamic, iar reload-urile nu mai sunt necesare.

Configurația schemei Shared
Dar ce zici de Docker?
Multe companii au trecut la un sistem bazat pe containere. Timeweb examinează acum posibilitatea unei astfel de tranziții. Desigur, în fiecare soluție există avantaje și dezavantaje.
Pe lângă avantajele incontestabile, un sistem pe bază de containere oferă utilizatorului resurse mai limitate. La Timeweb, datorită schemei de funcționare a găzduirii, utilizatorul nu are limitări privind memoria RAM. Acesta primește mai multe resurse decât în containere. În plus, utilizatorul poate încărca mai multe module Apache.
Timeweb susține funcționarea a aproximativ 500.000 de site-uri. Ne asumăm o mare responsabilitate și nu facem modificări instantanee și nejustificate în arhitectura complexă. Legătura Apache & Nginx este fiabilă și testată de timp. De asemenea, ne străduim să atingem o performanță maximă prin configurații unice.
Pentru funcționarea rapidă și de calitate a unui număr mare de site-uri, se impune utilizarea unei configurații model și dinamice pentru Apache și Nginx. Aceasta permite administrarea rapidă și eficientă a unui număr mare de servere de același tip.
Sursa: habr.com
