Každý má svého rivala. Pro Apache to je v posledních letech právě Nginx, který za poslední roky značně vylepšil svou pozici na poli web serverů. Tento duben (2019) už byl dokonce svým rivalem „poražen“.
Apache byl na vrcholku v roce 2005 kdy byl na téměř 71% všech webových stránek, ale to Nginx ještě nebyl na světě. Ten se ve statistikách objevil až v roce 2008 a pomalu si získával svou oblibu mezi správci serverů. Byl oblíben hlavně u větších projektů, a to dosvědčuje statistika z roku 2018 kdy z 10.000 nejlepších stránek používalo 64% Nginx a pouze 21% Apache.
Takže asi něco dělají dobře. Pojďme se na to podívat z blízka.
VPS Centrum
Vyzkoušejte zdarma naši aplikaci pro správu serveru a domén. Budete si připadat jako zkušený administrátor.
Co je Apache?
Vývoj web serveru Apache začal v roce 1993 na Illinoiské univerzitě. Bohužel hned v následujícím roce opustil tým hlavní programátor Rob Mccool. Došlo ke zpomalení a následně zastavení vývoje.
Mezitím si našel základnu u správců webových serverů, a ty k němu začali dodávat vlastní úpravy tzv. patche. Název vznikl z úcty a obdivu domorodému kmenu nativních Američanů – Apachů a anglického slovního spojení “A patchy server” (patchovaný server), kdysi byl Apache pouze sada patchů pro jiný web server. Jako indiánsky symbol je ve znaku barevné ptačí pero.
Funkcionalit nasbíral Apache už celou řadu a mnoho z nich je implementováno jako kompilované moduly rozšiřující jádro. Podporuje řadu programovacích jazyků, SSL či TLS, proxy anebo všemocný URL rewriter známý jako rewrite engine.
Apache poskytuje tzv. MultiProcessing modulů (MPM), který mu dovoluje se přizpůsobovat systému na kterém běží. Bohužel to znamená, že je hodně závislý na zvolených MPM a konkrétním nastavení.
Druhy MPM
- event
- worker
- prefork
Pokud operační systém podporuje vlákna a pooling je nejlepší řešení mpm_event. Pokud jsou vlákna podporována, ale pooling ne, tak se používá mpm_worker. V ostatních připadech se použije mpm_prefork.
Co je Nginx?
V roce 2001 byl vyvinut modul mod_accel do Apache, jako náhrada staršího mod_proxy. Igor Sysoev byl ale nespokojený s funkčností a škálovatelností Apache a proto se rozhodnul vyvinout Nginx a první oficiální verze vyšla v roce 2004.
Cíl byl jasný. Vyvinout webserver, který dokáže obsloužit i 10 000 požadavků najednou a s minimálními nároky na operační paměť. Požadavky také byly na možnost proxy, flexibilní konfigurace a implementovaná cache.
Freelo - Nástroj na řízení úkolů a projektů
Přidej se, pozvi svůj tým a klienty, rozděl práci a sleduj, jak se úkoly dají do pohybu.
Výsledkem je rychlá distribuce statického obsahu a možnost rozložení zátěže na další servery tzv. load balancing. Nejdříve se však dokáže podívat do své cache, jestli odpověď nemá u sebe a nemusel tak zbytečně zatěžovat server.
Nginx může být použít také jako reverzní proxy pro HTTP, HTTPS, SMTP, POP3 a IMAP. Můžete ho použít i jako frontend proxy pro Apache a díky tomu využijete to nejlepší z obou webserverů.
Doporučujeme přečíst i článek, jak funguje RAM na Linuxu, kde rozebíráme právě i cache.
Srovnání výkonu
Statický obsah
Nginx je 2,5x rychlejší než apache v testu, který měl 1000 současných spojení. Při 512 spojení je 2x rychlejší, a dokonce si bere o 4% míň RAM. To je i jeden z důvodů, proč je využíván hlavně u větších projektů – nespotřebovává tolik serverové prostředky.
Dynamický content
V servírování dynamického obsahu už žádný jednoznačný vítěz není a pokud se oba webservery dobře nastaví, tak podávají stejné výkony. Při testování Apache běžel na mód MPM_worker a Nginx běžel s modulem PHP-FPM.
Pokud potřebujete zvýšit rychlost z dynamických stránek, tak můžete přidat další cachovaci vrstvu. Pro větší efektivitu můžete nastavit load balancing (více webserverů obstarává požadavky). Poslední možnost je investovat do dalšího hardwaru.
Bezpečnost web serveru
Oba webservery mají dobrou pověst, co se bezpečnosti týče. Nginx ma větší výhodu, protože nemá tak rozsáhlý kód a je jednodušší ho udržovat bezpečnější.
Nginx udržuje aktuální seznam posledních bezpečnostních prohřešků s detailním vysvětlením. Apache zase nabízí bezpečnostní tipy proti DoS, jak chránit soubory anebo bezpečné nastavení práv.
Flexibility
Webservery se dají přizpůsobovat pomocí modulů, které jsou už vytvořené a funkční anebo si můžete napsat vlastní modul, ale to už je spíš pro administrátory ve velkých korporací, kde je potřeba mít věci na míru.
Moduly pro Apache a Nginx
Oba nabízejí spousty modulů se speciálníma funkcemi.
Apache modules
- Oficiální moduly
- Seznam modulu na Wikipedii
Nginx modules
Nelze říci, kdo má lepší moduly, vychází to vesměs na stejno. Oba webservery mají možnost pro cachovani, proxy-ing a load balancing. Nginx ale vyniká více v tom být využit jako reverzní proxy pro TCP a e-maily (SMTP, IMAP, POP3).
Nginx má ale jednu větší výhodu v podobě podpory LUA scriptování, který využívá např. OpenResty.
Apache a .htaccess
.Htaccess je takový prostředník mezi serverem a hlavním konfiguračním souborem. Když webserver přistoupí k webu, tak nejdřív načte .htaccess a vezme v potaz zde vypsaná pravidla.
Nginx žádnou alternativu k .htaccess nemá a každá změna konfigurace se musí dělat přímo v konfiguračním souboru a následně webserver reloadnout.
S pravidly to ale nepřehánějte, protože čím víc jich tam bude, tím bude načtení stránky pomalejší.
Nginx a WordPress
Pokud porovnáme, který webserver dokáže lépe zprostředkovávat WordPress, tak odpověď bude znít jasně: Nginx. Spousta WordPress hostingů běží právě na něm, protože dokáže obsah dostat ke klientům rychleji než Apache. Hlavně co se statického obsahu týče.
Jak to funguje na virtuálním serveru od Váš Hosting?
Na serveru je předinstalovaný Apache i Nginx. Chceme dát každému na výběr a bez složitých instalací a koumání, jak na to. Pokud budete mít s nastavením jakýkoliv problém, tak nám napište na podporu a s radostí vám pomůžeme. Jak uvidíte v souhrnu na konci, tak obě řešení mají své pro i proti. Nejdůležitější je tedy otestovat, co bude nejlépe fungovat zrovna vám.
Virtuální servery s VPS Centrem, mají v sekci Správa serveru tlačítko přepnout na Nginx, který je vč. konfigurace předpřipravený. Defaultně servery běží na Apache.
“Pozor: Po změně na Nginx přestanou pravidla v .htaccess fungovat.”
Na oficiálních stránkách Nginxu najdete i konfigurační soubor přímo pro WordPress, ale bohužel neřeší virtuální robots.txt, který WP používá. Můžete prohledat i různé blogy či stránky, variant je rozhodně víc.
Kdo je tedy lepší? Apache nebo Nginx
Ve spoustě situacích vyjdou testy na stejno nebo jen s minimálním rozdílem. Nginx má navrch co se týče statického obsahu, ale s dynamickým obsahem už to bohužel tolik slavné není. Za to umí pokročilejší věci lépe, jako je streamování mediálního obsahu nebo reverzní proxy pro non-HTTP protokoly. Můžete zakoupit i komerční licenci a dostanete přístup k tréninkovým materiálům a nápomocnou technickou podporu.
S komerční verzi přichází další výhody vy formě pokočilejšího load balancigu a API pro rekonfiguraci v realném čase.
Na sdíleném hostingu zase většinou narazíme na Apache, protože soubor .htaccess nabízí koncovým uživatelům větší flexibilitu ohledně nastavení webserveru a různých pravidel.
Nginx je zase mnohem populárnější na VPS či dedikovaných serverech nebo rovnou v celých clusterech. Najdete ho určitě i v přední linii na velkých portálech, kteří musí obsluhovat velký počet návštěvníků najednou a dodat jim statický obsah a/nebo streamovat mediální obsah.
Apache má zase obrovskou komunitu, je s námi už dlouho a je velice stabilní. Většina lidí si tedy zvykla, že to “nějak funguje” a nemusí tomu věnovat čas a experimentovat.
Nesmíme zapomenout na soubor .htaccess, který si bohužel bere velkou část výkonu. Můžete podporu vypnout a výkonnostně se přiblíží k Nginxu za pomocí mod_event.
Na našich serverech máte předpřipravené oba webservery a v sekci “Správa Serveru” je můžete přepínat dle potřeby.
Pokud máte chuť a čas na experimenty, tak se určitě vyplatí vyzkoušet oba webservery s různým nastavení a zjistit, který bude nejlepší. Každý web/projekt může být odlišný a co funguje pro jeden web nemusí fungovat tak dobře pro ten druhý.
Nejvíce efektivní bude kombinace obou webserverů, ale bohužel to znamená i pokročilejší znalosti pro konfiguraci a složitějším řízení uživatelských práv. Nginx může fungovat jako reverzní proxy a bude požadavky přeposílat na Apache. Díky tomu dokážete využít nejlepší vlastnosti z obou webserverů a zkombinovat je do jednoho. Samozřejmě tohle se vyplatí spíše pro větší projekty či aplikace. Jednoduchá firemní prezentace nebo blog, takhle pokročilou infrastrukturu mít nemusí.
*otestuje si oba webservery s našim VPS Centrem na týden zdarma a bez závazků