Apache a Nginx. Spojeno jedním řetězem

Jak je implementována kombinace Apache & Nginx v Timeweb

Pro mnoho společností je Nginx + Apache + PHP velmi typickou a běžnou kombinací a Timeweb není výjimkou. Pochopení toho, jak přesně je implementováno, však může být zajímavé a užitečné.

Apache a Nginx. Spojeno jedním řetězem

Použití takové kombinace je samozřejmě diktováno potřebami našich klientů. Nginx i Apache hrají zvláštní roli, každý řeší specifický problém.

Základní nastavení Apache se provádějí v konfiguračních souborech samotného Apache a nastavení pro klientské weby se provádějí prostřednictvím soubor .htaccess. .htaccess je konfigurační soubor, ve kterém může klient samostatně konfigurovat pravidla a chování webového serveru. Toto nastavení bude platit konkrétně pro jeho web. Například díky funkcionalitě Apache mohou uživatelé změnit provozní režim v rámci stejné verze PHP z mod_php na mod_cgi; můžete nastavit přesměrování, optimalizaci pro SEO, pohodlné URL, některé limity pro PHP.

Nginx používá se jako proxy server k přesměrování provozu na Apache a jako webový server k poskytování statického obsahu. Vyvinuli jsme také bezpečnostní moduly pro Nginx, které nám umožňují chránit data našich uživatelů, například oddělením přístupových práv.

Představme si, že uživatel navštíví web našeho klienta. Nejprve se uživatel dostane k Nginxu, který obsluhuje statický obsah. Stává se to okamžitě. Poté, když dojde k načtení PHP, Nginx předá požadavek Apache. A Apache spolu s PHP již generuje dynamický obsah.

Vlastnosti balíčku Apache & Nginx v Timewebu

Náš virtuální hosting implementuje 2 hlavní operační schémata pro Apache a Nginx: Sdílené a vyhrazené.

Sdílené schéma

Toto schéma se používá pro většinu uživatelů. Vyznačuje se jednoduchostí a náročností na zdroje: sdílené schéma využívá méně zdrojů, a proto je jeho tarif levnější. Podle tohoto schématu server provozuje jeden Nginx, který mu umožňuje obsluhovat všechny požadavky uživatelů a několik instancí Apache.

Sdílené schéma se dlouhodobě zlepšuje: postupně jsme opravovali nedostatky. Pohodlně to lze provést bez nutnosti úpravy zdrojového kódu.

Apache a Nginx. Spojeno jedním řetězem
Sdílené schéma

Vyhrazené schéma

Dedikovaný vyžaduje více zdrojů, takže jeho tarif je pro zákazníky dražší. Ve schématu Dedicated dostane každý klient svůj vlastní samostatný Apache. Zdroje jsou zde vyhrazeny pro klienta, jsou alokovány výhradně. 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. Pro každou verzi PHP je tedy spuštěn vlastní Apache.

Apache a Nginx. Spojeno jedním řetězem
Vyhrazené schéma

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

Dříve jsme pro Nginx používali mnoho sdílených paměťových zón (zón) - jeden blok serveru na doménu. Toto nastavení vyžaduje mnoho zdrojů, protože pro každý web je vytvořena samostatná zóna. V nastavení Nginx je však většina webů stejného typu, takže je lze umístit do jedné zóny díky použití mapových direktiv v modulu ngx_http_map_module, které umožňují specifikovat korespondence. Máme například šablonu zóny, ve které musíme dodat proměnné: cesta k webu, verze PHP, uživatel. Zrychlilo se tak opětovné načtení konfigurace Nginx, tedy opětovné načtení.

Tato konfigurace výrazně ušetřila zdroje RAM a zrychlila Nginx.

Reload nebude fungovat!

Ve schématu Shared jsme se zbavili nutnosti znovu načítat Apache při změně nastavení webu. Dříve, když chtěl jeden klient přidat doménu nebo změnit verzi PHP, bylo vyžadováno povinné opětovné načtení Apache, což vedlo ke zpožděním v odpovědích a negativně ovlivnilo výkon webu.

Zbavili jsme se opětovného načítání vytvořením dynamických konfigurací. Díky mpm-itk (modul Apache), každý proces běží jako samostatný uživatel, což zvyšuje úroveň zabezpečení. Tato metoda umožňuje přenášet data o uživateli a jeho kořenovém adresáři dokumentu z Nginx do Apache2. Apache tedy neobsahuje konfigurace stránek, přijímá je dynamicky a již není potřeba opětovné načítání.

Apache a Nginx. Spojeno jedním řetězem
Konfigurace sdíleného schématu

A co Docker?

Mnoho společností přešlo na kontejnerový systém. Timeweb aktuálně zvažuje možnost takového přechodu. Každé rozhodnutí má samozřejmě svá pro a proti.

Spolu s nepopiratelnými výhodami poskytuje kontejnerový systém uživateli méně zdrojů. V Timewebu díky popsanému schématu hostingu nemá uživatel žádné omezení v RAM. Přijímá více zdrojů než v kontejneru. Uživatel může mít navíc nahráno více modulů Apache.

Timeweb pohání asi 500 000 webových stránek. Přebíráme velkou odpovědnost a neprovádíme okamžité, neopodstatněné změny složité architektury. Kombinace Apache & Nginx je spolehlivá a prověřená časem. My se zase snažíme dosáhnout maximálního výkonu prostřednictvím unikátních konfigurací.

Pro kvalitní a rychlý provoz velkého množství stránek je potřeba použít šablonu a dynamickou konfiguraci Apache a Nginx. Umožňuje snadno a rychle spravovat velké množství podobných serverů.

Zdroj: www.habr.com

Přidat komentář