Apache a Nginx. Prepojené jednou reťazou

Ako je implementovaná kombinácia Apache & Nginx v Timeweb

Pre mnoho spoločností je Nginx + Apache + PHP veľmi typická a bežná kombinácia a Timeweb nie je výnimkou. Avšak pochopiť, ako presne sa implementuje, môže byť zaujímavé a užitočné.

Apache a Nginx. Prepojené jednou reťazou

Použitie takejto kombinácie je samozrejme diktované potrebami našich klientov. Nginx aj Apache zohrávajú osobitnú úlohu, každý rieši špecifický problém.

základné nastavenia apache sa vykonávajú v konfiguračných súboroch samotného Apache a nastavenia pre klientske stránky prebiehajú prostredníctvom súbor .htaccess. .htaccess je konfiguračný súbor, v ktorom môže klient samostatne konfigurovať pravidlá a správanie webového servera. Toto nastavenie sa bude vzťahovať konkrétne na jeho stránku. Napríklad vďaka funkcionalite Apache môžu používatelia zmeniť prevádzkový režim v rámci rovnakej verzie PHP z mod_php na mod_cgi; môžete nastaviť presmerovania, optimalizáciu pre SEO, pohodlné URL, niektoré limity pre PHP.

Nginx používa sa ako proxy server na presmerovanie prevádzky na Apache a ako webový server na poskytovanie statického obsahu. Vyvinuli sme tiež bezpečnostné moduly pre Nginx, ktoré nám umožňujú chrániť dáta našich používateľov, napríklad oddelením prístupových práv.

Predstavme si, že používateľ navštívi webovú stránku nášho klienta. Najprv sa používateľ dostane do Nginx, ktorý poskytuje statický obsah. Stáva sa to okamžite. Potom, keď príde na načítanie PHP, Nginx prepošle požiadavku Apache. A Apache spolu s PHP už generuje dynamický obsah.

Funkcie balíka Apache & Nginx v Timeweb

Náš virtuálny hosting implementuje 2 hlavné operačné schémy pre Apache & Nginx: Zdieľané a venované.

Zdieľaná schéma

Táto schéma sa používa pre väčšinu používateľov. Vyznačuje sa jednoduchosťou a náročnosťou zdrojov: Zdieľaná schéma využíva menej zdrojov, a preto je jej tarifa lacnejšia. Podľa tejto schémy server prevádzkuje jeden Nginx, ktorý mu umožňuje obsluhovať všetky požiadavky používateľov a niekoľko inštancií Apache.

Zdieľaná schéma sa dlhodobo zlepšuje: postupne sme opravovali nedostatky. Pohodlne to možno vykonať bez potreby úpravy zdrojového kódu.

Apache a Nginx. Prepojené jednou reťazou
Zdieľaná schéma

Vyhradená schéma

Vyhradená vyžaduje viac zdrojov, takže jej tarifa je pre zákazníkov drahšia. V schéme Dedicated dostane každý klient svoj vlastný samostatný Apache. Zdroje sú tu vyhradené pre klienta, sú prideľované výlučne. 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 je spustený vlastný Apache.

Apache a Nginx. Prepojené jednou reťazou
Vyhradená schéma

Bezpečná zóna. Nastavenie zón v Nginx

Predtým sme pre Nginx používali veľa zdieľaných pamäťových zón (zón) - jeden blok servera na doménu. Toto nastavenie vyžaduje veľa zdrojov, pretože pre každú lokalitu je vytvorená samostatná zóna. V nastaveniach Nginx je však väčšina stránok rovnakého typu, takže ich možno umiestniť do jednej zóny vďaka použitiu mapových direktív v module ngx_http_map_module, ktoré umožňujú špecifikovať korešpondenciu. Napríklad máme šablónu zóny, v ktorej musíme dodať premenné: cesta k stránke, verzia PHP, používateľ. Zrýchlilo sa teda opätovné načítanie konfigurácie Nginx, teda opätovné načítanie.

Táto konfigurácia výrazne ušetrila zdroje RAM a zrýchlila Nginx.

Opätovné načítanie nebude fungovať!

V schéme Shared sme sa zbavili nutnosti opätovného načítania Apache pri zmene nastavení webu. Predtým, keď jeden klient chcel pridať doménu alebo zmeniť verziu PHP, bolo potrebné povinné opätovné načítanie Apache, čo viedlo k oneskoreniu odpovedí a negatívne ovplyvnilo výkon stránky.

Vytvorením dynamických konfigurácií sme sa zbavili opätovného načítania. Vďaka mpm-itk (modul Apache), každý proces beží ako samostatný používateľ, čo zvyšuje úroveň zabezpečenia. Táto metóda vám umožňuje prenášať údaje o používateľovi a jeho koreňovom adresári dokumentu z Nginx do Apache2. Apache teda neobsahuje konfigurácie stránok, prijíma ich dynamicky a už nie je potrebné opätovné načítanie.

Apache a Nginx. Prepojené jednou reťazou
Konfigurácia zdieľanej schémy

A čo Docker?

Mnoho spoločností prešlo na kontajnerový systém. Timeweb momentálne zvažuje možnosť takéhoto prechodu. Samozrejme, každé rozhodnutie má svoje klady a zápory.

Spolu s nepopierateľnými výhodami poskytuje kontajnerový systém používateľovi menej zdrojov. V Timewebe vďaka opísanej schéme hostingu nemá používateľ žiadne obmedzenie v RAM. Dostáva viac zdrojov ako v kontajneri. Okrem toho môže mať používateľ načítaných viac modulov Apache.

Timeweb poháňa približne 500 000 webových stránok. Preberáme veľkú zodpovednosť a nerobíme okamžité, neopodstatnené zmeny v komplexnej architektúre. Kombinácia Apache & Nginx je spoľahlivá a overená časom. My sa zase snažíme dosiahnuť maximálny výkon prostredníctvom jedinečných konfigurácií.

Pre kvalitnú a rýchlu prevádzku veľkého množstva stránok je potrebné použiť šablónu a dynamickú konfiguráciu Apache a Nginx. Umožňuje vám jednoducho a rýchlo spravovať veľké množstvo podobných serverov.

Zdroj: hab.com

Pridať komentár