Apache & Nginx. Jsou spojeny jedním řetězcem

Jak je implementována kombinace Apache & Nginx v Timeweb

Pro mnoho společností je kombinace Nginx + Apache + PHP velmi běžná a rozšířená, a Timeweb zde není výjimkou. Přesto může být zajímavé a užitečné pochopit, jak přesně je implementována.

Apache & Nginx. Spjaty jedním řetězcem

Použití takové kombinace je samozřejmě určeno potřebami našich klientů. Jak Nginx, tak Apache hrají zvláštní roli, přičemž každý plní specifický úkol.

Hlavní nastavení Apache se provádějí v konfiguračních souborech samotného Apache, zatímco nastavení pro klientské weby probíhá prostřednictvím souboru .htaccess. .htaccess je konfigurační soubor, ve kterém si klient může sám nastavit pravidla a chování webového serveru. Toto nastavení se bude vztahovat konkrétně k jeho webu. Například díky funkcionalitě Apache mohou uživatelé měnit režim práce v rámci jedné verze PHP z mod_php na mod_cgi; mohou nastavovat přesměrování, optimalizaci pro SEO, příjemné URL, některé limity pro PHP.

Nginx se používá jako proxy server pro přesměrování provozu na Apache a jako webový server pro dodávání statického obsahu. Také pro Nginx jsme vyvinuli bezpečnostní moduly, které chrání data našich uživatelů, například rozdělením přístupových práv.

Představme si, že nějaký uživatel navštíví web našeho klienta. Nejprve se uživatel dostane na Nginx, který dodává statický obsah. To se děje okamžitě. Pak, když dojde na načítání PHP, Nginx přesměrovává požadavek na Apache. A Apache společně s PHP generuje dynamický obsah.

Specifika kombinace Apache & Nginx v Timeweb

Na našem virtuálním hostingu jsou implementovány 2 základní schémata práce Apache & Nginx: Shared a Dedicated.

Schéma Shared

Toto schéma se používá pro většinu uživatelů. Vyznačuje se jednoduchostí a úsporností: schéma Shared využívá méně zdrojů, a tím je jeho tarif levnější. Podle tohoto schématu je na serveru spuštěn jeden Nginx, který obsluhuje všechny uživatelské požadavky, a několik instancí Apache.

Schéma Shared se dlouho zdokonalovalo: postupně jsme opravovali nedostatky. Je pohodlné, že ji lze realizovat bez nutnosti upravovat zdrojový kód.

Apache & Nginx. Spjaty jedním řetězcem
schéma Shared

Schéma Dedicated

Dedicated vyžaduje více zdrojů, proto je její tarif dražší pro klienty. V Dedicated schématu se pro každého klienta zvedá jeho vlastní, oddělený Apache. Zdroje jsou zde rezervovány pro klienta a jsou vyhrazeny exkluzivně. Jak to funguje: na serveru je několik verzí PHP. Podporujeme verze 5.3, 5.4, 5.6, 7.1, 7.2, 7.3, 7.4. Tímto způsobem je pro každou verzi PHP spuštěn vlastní Apache.

Apache & Nginx. Spjaty jedním řetězcem
schéma Dedicated

Bezpečná zóna. Nastavení zón v Nginx

Dříve jsme pro Nginx používali mnoho zón sdílené paměti (zone) – jeden blok server na jeden doménu. Takové nastavení vyžaduje velké množství zdrojů, protože pro každý web je vytvořena samostatná zóna. Nicméně v nastaveních Nginx je většina webů podobná, proto je možné je umístit do jedné zóny díky použití direktivy map v modulu ngx_http_map_module, která umožňuje nastavit odpovídající. Například, máme šablonu zóny, do které musíme dodávat proměnné: cesta k webu, verze PHP, uživatel. Tímto způsobem se zrychlilo načítání konfigurace Nginx, tedy reload.

Podobná konfigurace výrazně ušetřila zdroje operační paměti a zrychlila práci Nginx.

Reload neproběhne!

Ve schématu Shared jsme se zbavili nutnosti restartu (reload) Apache při změnách v nastaveních webů. Dříve, když chtěl jeden klient přidat doménu nebo změnit verzi PHP, byl nezbytný povinný reload Apache, což vedlo k prodlevám v odpovědích a negativně ovlivňovalo výkon webů.

Zbavili jsme se reloadů vytvořením dynamických konfigurací. Díky mpm-itk (modul Apache), každý proces běží pod samostatným uživatelem, což zvyšuje úroveň bezpečnosti. Tento způsob umožňuje přenášet z Nginx do Apache2 data o uživateli a jeho document_root. Tímto způsobem Apache neobsahuje konfiguraci webů, získává je dynamicky a reloady již nejsou potřebné.

Apache & Nginx. Spjaty jedním řetězcem
Konfigurace schématu Shared

A co Docker?

Mnoho společností přešlo na systém založený na kontejnerech. Timeweb nyní zvažuje možnost takového přechodu. Samozřejmě, v každém řešení lze najít klady a zápory.

I když containerová technologie přináší nepopiratelné výhody, uživatel má k dispozici méně zdrojů. V Timeweb díky popsané struktuře hostingu nejsou uživatelé omezeni v operační paměti. Získávají více zdrojů než v kontejnerech. Kromě toho může uživatel nahrát více modulů Apache.

Timeweb hostuje přibližně 500 000 webů. Neseme velkou odpovědnost a neprovádíme okamžité, neopodstatněné změny ve složité architektuře. Kombinace Apache & Nginx je spolehlivá a prověřená časem. My se zase snažíme dosáhnout maximální výkonnosti díky unikátním konfiguracím.

Pro kvalitní a rychlý provoz velkého počtu webů je třeba využívat šablonové a dynamické konfigurace Apache a Nginx. To umožňuje snadnou a rychlou administraci velkého počtu podobných serverů.

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster