Ako je implementovaný spoj Apache & Nginx v Timeweb
Pre mnohé spoločnosti je kombinácia Nginx + Apache + PHP veľmi typická a rozšírená, a Timeweb tu nie je výnimkou. Avšak pochopenie, ako presne je táto kombinácia realizovaná, môže byť zaujímavé a užitočné.

Použitie takejto kombinácie je samozrejme dané potrebami našich klientov. Oba, Nginx a Apache, hrajú osobitnú úlohu, každý rieši určitú úlohu.
Hlavné nastavenia Apache sa vykonávajú v konfiguračných súboroch samotného Apache, zatiaľ čo nastavenia pre klientské stránky prebiehajú cez súbor .htaccess.htaccess je konfiguračný súbor, v ktorom si klient môže sám nastaviť pravidlá a správanie webového servera. Toto nastavenie sa bude týkať konkrétne jeho stránky. Napríklad, vďaka funkčnosti Apache môžu používatelia meniť režim práce v rámci jednej verzie PHP z mod_php na mod_cgi; je možné nastaviť presmerovania, optimalizáciu pre SEO, priateľské URL, a niektoré limity pre PHP.
Nginx funguje ako proxy server na presmerovanie prenosu na Apache a ako web server na dodávanie statického obsahu. Pre Nginx sme tiež vyvinuli bezpečnostné moduly, ktoré umožňujú chrániť dáta našich používateľov, napríklad oddeliť práva prístupu.
Predstavme si, že nejaký používateľ navštevuje stránku nášho klienta. Najprv používateľ prechádza na Nginx, ktorý dodáva statický obsah. To sa deje okamžite. Potom, keď dôjde na načítanie PHP, Nginx presmeruje požiadavku na Apache. A Apache spolu s PHP už generuje dynamický obsah.
Špecifiká spojenia Apache & Nginx v Timeweb
Na našom virtuálnom hostingu sú implementované 2 základné schémy práce Apache & Nginx: Zdieľaná a Dedikovaná.
Zdieľaná schéma
Táto schéma sa používa pre väčšinu používateľov. Vyznačuje sa jednoduchosťou a nízkou spotrebou zdrojov: Zdieľaná schéma používa menej zdrojov, preto je aj jej tarifa lacnejšia. Podľa tejto schémy je na serveri spustený jeden Nginx, ktorý umožňuje obsluhovať všetky používateľské požiadavky, a niekoľko instance Apache.
Zdieľaná schéma bola dlhodobo vylepšovaná: postupne sme opravovali nedostatky. Je praktické, že ju možno realizovať bez nutnosti upravovať zdrojový kód.

zdieľaná schéma
Dedikovaná schéma
Dedikovaný server vyžaduje viac zdrojov, preto je jeho tarifa pre klientov drahšia. V schéme dedikovaného servera je pre každého klienta spustený vlastný, samostatný Apache. Zdroje sú tu rezervované pre klienta, sú vyhradené exkluzívne. Ako to funguje: na serveri je niekoľko verzií PHP. Podporujeme verzie 5.3, 5.4, 5.6, 7.1, 7.2, 7.3, 7.4. Takže pre každú verziu PHP beží vlastný Apache.

schéma dedikovaného servera
Bezpečná zóna. Nastavenie zón v Nginx
Predtým sme pre Nginx používali množstvo zón zdieľanej pamäte (zone) — jeden blok servera pre jeden domén. Toto nastavenie vyžaduje veľké množstvo zdrojov, pretože pre každú stránku sa vytvára samostatná zóna. Avšak v nastaveniach Nginx je väčšina stránok rovnaká, a preto ich môžeme umiestniť do jednej zóny pomocou direktívy map v module ngx_http_map_module, ktoré umožňujú nastaviť zodpovednosti. Napríklad máme šablónu zóny, do ktorej musíme dodávať premenné: cesta k stránke, verzia PHP, používateľ. Takto sa urýchlilo prečítanie konfigurácie Nginx, teda reload.
Takáto konfigurácia ušetřila značné množstvo operačnej pamäte a urýchlila činnosť Nginx.
Reload neprebehne!
V schéme zdieľaného servera sme sa zbavili potreby reštartovať (reload) Apache pri zmenách v nastaveniach stránok. Predtým, keď jeden klient chcel pridať doménu alebo zmeniť verziu PHP, bolo potrebné povinné reload Apache, čo spôsobovalo oneskorenia v odpovediach a negatívne ovplyvňovalo výkon stránok.
Zbavili sme sa reloadov vytvorením dynamických konfigurácií. Vďaka (module Apache) sa každý proces vykonáva pod jednotlivým používateľom, čo zvyšuje úroveň zabezpečenia. Tento spôsob umožňuje prenášať z Nginx do Apache2 údaje o používateľovi a jeho document_root. Takto Apache neobsahuje v sebe konfigurácie stránok, dostáva ich dynamicky a reloady už nie sú potrebné.

Konfigurácia schémy zdieľaného servera
A čo Docker?
Veľa spoločností prešlo na systém založený na kontajneroch. Timeweb teraz zvažuje možnosť takéhoto prechodu. Nepochybne, v každom riešení sa dajú nájsť plusy a mínusy.
Napriek nepopierateľným výhodám má používateľ v kontajnerovom systéme menej zdrojov. V Timeweb, vďaka opísanému spôsobu fungovania hostingu, nemá používateľ obmedzenie pamäte. Získa viac zdrojov, než v kontajneri. Okrem toho môže užívateľ nahrať viac modulov Apache.
Timeweb prevádzkuje približne 500 000 webových stránok. Neseme veľkú zodpovednosť a nevykonávame okamžité, neopodstatnené zmeny v zložitej architektúre. Prepojenie Apache & Nginx je spoľahlivé a overené časom. Naša snaha je dosiahnuť maximálny výkon vďaka unikátnym konfiguráciám.
Na kvalitnú a rýchlu prácu veľkého počtu webových stránok je potrebné využiť šablónovú a dynamickú konfiguráciu Apache a Nginx. Umožňuje jednoducho a rýchlo spravovať veľké množstvo podobných serverov.
Zdroj: habr.com
