Webový server je počítačový software, který obsluhuje webový obsah. Vytváří také spojení mezi počítačovým serverem a webovým prohlížečem uživatele a doručuje mezi nimi soubory tam a zpět.
Výběr správného webového serveru je zásadní při nastavování webu nebo spouštění projektu VPS, protože může významně ovlivnit výkon a zabezpečení webu.
Pokud si nejste jisti, který webový server použít, zvažte Apache a NGINX – oba jsou nejoblíbenějšími webovými servery a jsou zodpovědné za obsluhu více než poloviny provozu na internetu.
Abychom vám pomohli rozhodnout se, kterým začít, projdeme si podrobné srovnání NGINX vs Apache.
NGINX vs Apache – obecný přehled
Než začneme porovnávat Apache vs NGINX, pojďme prozkoumat rozdíly mezi webovými servery a jejich obecné vlastnosti.
Apache
Apache HTTP Server – běžně označované jako Apache nebo Apache HTTPD – je bezplatný software webového serveru s otevřeným zdrojovým kódem. Zpracovává požadavky klientů a poskytuje webový obsah prostřednictvím protokolu HTTP (Hypertext Transfer Protocol).
Webový server Apache byl uveden na trh v roce 1995 a od té doby jej spravuje Apache Software Foundation . Byl to také dominantní webový server na rané světové síti.
Apache HTTP Server v současnosti pohání přibližně 33,9 % webových stránek po celém světě a zaujímá pozici číslo jedna v podílu na trhu jako jeden z nejstarších webových serverů.
Webový server Apache podporuje mnoho operačních systémů (OS), jako je Microsoft Windows, OpenVMS a jakýkoli operační systém typu Unix, jako je Linux a macOS.
A co víc, webový server Apache je také součástí zásobníku LAMP, jednoho z prvních balíků softwaru s otevřeným zdrojovým kódem pro vývoj webu. V důsledku toho webový server také dobře funguje s mnoha systémy pro správu obsahu (CMS), programovacími jazyky a webovými frameworky.
Apache je obzvláště oblíbený díky výkonu a flexibilitě, které pocházejí z jeho modulového systému . S moduly Apache mohou uživatelé snadno přidávat nebo odebírat funkce a upravovat svůj server tak, aby vyhovoval jejich potřebám.
NGINX
NGINX – vyslovováno jako „Engine X ” – je jedním z nejspolehlivějších serverů pro škálovatelnost a rychlost. Je to také jeden z nejrychleji rostoucích webových serverů v oboru, když dosáhl druhé pozice v podílu na trhu.
Stejně jako Apache je NGINX open-source a zdarma k použití.
Igor Sysoev, tvůrce NGINX, začal tento software vyvíjet v roce 2002, aby odpověděl na problém C10K. Tehdy mnoho webových serverů nebylo schopno zpracovat více než 10 000 připojení současně.
Webový server NGINX byl vydán s asynchronní architekturou řízenou událostmi, která umožňuje zpracovávat mnoho požadavků současně.
NGINX je obzvláště populární díky své schopnosti růst a zvyšovat provoz a lze jej snadno škálovat na minimálním hardwaru. Navíc je vynikající při obsluhování statických souborů rychle.
Kromě použití jako webový server lze NGINX využít také jako nástroj pro vyrovnávání zátěže pro zlepšení efektivity zdrojů a dostupnosti serveru. Navíc může fungovat jako reverzní proxy, což zajišťuje hladký provoz mezi servery a klienty.
NGINX podporuje téměř všechny operační systémy podobné Unixu. Instalace NGINX na Windows však může mít za následek určitá omezení výkonu, jako je nedostatečná škálovatelnost a problémy s ověřováním UDP.
Nyní, když jsme prošli základy Apache a NGINX, je čas je porovnat pomocí několika kritických aspektů důležitých pro webové servery.
Základní architektura – Práce s připojeními
Architektura webového serveru je logické uspořádání nebo mechanismus určující, jak webový server zpracovává webové požadavky, připojení a provoz. Je to jedno ze základních kritérií, které je třeba zvážit při výběru webového serveru.
Pojďme porovnat NGINX vs Apache z hlediska základní architektury a toho, jak oba software zpracovávají připojení.
Apache
Apache se řídí procesem řízenou architekturou ve výchozím nastavení to znamená, že vytvoří jediné vlákno pro zpracování každého požadavku na připojení.
Nevýhodou procesně řízené architektury je, že Apache potřebuje vytvořit mnoho procesů, když se zabývá mnoha požadavky. Může to vést k velké spotřebě zdrojů , což způsobuje problémy se serverem, jako je pomalé načítání webových stránek a výpadky webu.
Naštěstí Apache poskytuje různé moduly pro více zpracování (MPM) které určují, jak tento webový server s otevřeným zdrojovým kódem přijímá a zpracovává požadavky HTTP, a uživatelé si mohou svobodně vybrat, který MPM nejlépe vyhovuje jejich potřebám.
Existují tři hlavní MPM:
- mpm_prefork – prefork MPM nemá vlákna, což znamená, že každý podřízený proces může zpracovat pouze jeden požadavek najednou. Jeho výkon však klesá okamžitě poté, co požadavky překročí počet procesů, takže je pro tento MPM náročné efektivně škálovat.
- mpm_worker – každý proces pracovního MPM může vytvořit více vláken a každé vlákno může také zpracovávat připojení. To umožňuje systému obsluhovat více požadavků najednou. Navíc, protože vlákna potřebují méně prostředků než procesy, může se tento MPM lépe škálovat a spotřebovávat méně zdrojů než prefork MPM.
- mpm_event – událost MPM je podobná pracovnímu MPM, ale je také optimalizována tak, aby zpracovávala udržovaná připojení. Funguje to tak, že odloží vyhrazená vlákna pro správu udržovaných připojení a přiděluje aktivní požadavky jiným vláknům. Tento proces pomáhá zpomalit událost MPM všemi požadavky na udržení. Výsledkem je, že webový server Apache má nejnižší požadavky na zdroje při použití s tímto MPM.
Mějte na paměti, že na server můžete kdykoli načíst pouze jeden MPM. Pokud váš projekt vyžaduje stabilitu a kompatibilitu, použijte prefork MPM. U webů, které vyžadují větší škálovatelnost a rozmanitost, však zvažte použití pracovních nebo událostí MPM.
NGINX
Zatímco mnoho webových serverů používá jednoduchou architekturu řízenou vlákny nebo procesem, NGINX jde na jiný přístup, když využívá asynchronní, neblokující architekturu řízenou událostmi . To umožňuje webovému serveru zvládnout více připojení v rámci jednoho procesu.
NGINX má hlavní proces který provádí privilegované operace, jako je vazba na porty, čtení a vyhodnocování konfiguračních souborů a vytváření několika podřízených procesů.
Zde jsou tři typy podřízených procesů NGINX :
- Proces načítání mezipaměti – může načíst diskovou mezipaměť do paměťové zóny. Tento proces má nízké nároky na zdroje, protože se spustí pouze jednou, hned po spuštění NGINX.
- Proces správce mezipaměti – má za cíl udržet množství dat uložených v mezipaměti v rámci nakonfigurovaných velikostí tím, že mezipaměť pravidelně kontroluje a odstraňuje data, ke kterým se přistupovalo naposledy.
- Pracovní proces – dokáže zpracovat stovky tisíc připojení HTTP současně, což znamená, že není třeba vytvářet nové procesy nebo vlákna pro každé připojení. Místo toho každý pracovní proces běží nezávisle a obsahuje menší jednotky nazývané pracovní připojení a každá jednotka je zodpovědná za zpracování podprocesů požadavků. Pracovní procesy mohou také komunikovat s upstream servery a také číst a zapisovat obsah na disk.
Architektura NGINX řízená událostmi dokáže efektivně distribuovat požadavky klientů mezi pracovní procesy, takže tento webový server funguje lépe než Apache, pokud jde o škálovatelnost.
Vzhledem k tomu, že NGINX dokáže bez problémů zpracovat tisíce požadavků – dokonce i na systémech s nízkou spotřebou – je tento webový server vhodný pro weby s vysokou úrovní provozu, jako jsou vyhledávače, weby elektronického obchodu a cloudové úložiště. Kromě toho mnoho populárních sítí pro doručování obsahu (CDN) jako MaxCDN a Cloudflare také používá NGINX pro doručování obsahu.
Porovnání výkonu – statický vs dynamický obsah
Výkon webového serveru je obvykle určen jeho schopností zpracovávat statický a dynamický obsah.
Statický obsah je jakýkoli webový soubor, který zůstává stejný pokaždé, když je doručen koncovému uživateli, a je obvykle uložen na serveru CDN. Proto se zřídka mění a nezávisí na chování uživatele, což z něj činí jeden z nejjednodušších typů obsahu pro přenos přes internet. Několik příkladů statických souborů zahrnuje knihovnu JavaScript, soubory HTML a CSS a obrázky.
Dynamický obsah , je však webová stránka nebo soubor, který se mění na základě zájmů, charakteristik a preferencí uživatele. Tento typ obsahu nebude pro každého vypadat stejně, protože je generován, když uživatel požádá o stránku. Některé příklady stránek s tímto druhem obsahu jsou internetové obchody a platformy sociálních médií.
Protože NGINX a Apache přicházejí s různými způsoby zpracování požadavků na statický a dynamický obsah, podívejme se, který webový server funguje lépe v tomto srovnání Apache vs NGINX.
Apache
Apache obsluhuje statický obsah pomocí svého tradičního přístupu založeného na souborech – výkon této operace je primárně funkcí výše zmíněných MPM.
Apache může takéspouštět dynamický obsah na webovém serveru sám, aniž by se musel spoléhat na externí komponenty. Místo toho zpracovává dynamický obsah integrací procesoru vhodných jazyků do každé své pracovní instance a uživatelé mohou tento procesor aktivovat prostřednictvím dynamicky načítatelných modulů Apache.
NGINX
Pokud jde o poskytování statického obsahu, NGINX funguje rychleji než Apache protože ukládá statické soubory do mezipaměti, aby je zpřístupnil, kdykoli jsou požadovány.
NGINX však nemá vestavěnou schopnost zpracovávat dynamický obsah. NGINX musí předat požadavky externímu procesoru, jako je FastCGI Process Manager (PHP-FPM), aby mohl zpracovat a zpracovat dynamický obsah. Jakmile tento webový server obdrží obsah, přenese výsledky klientovi.
Konfigurace na úrovni adresáře pro NGINX a Apache
Pokud chcete jinému uživateli poskytnout kontrolu nad některými komponentami vašeho webu, pak je nezbytné vybrat webový server, který umožňuje konfiguraci na úrovni adresářů v rámci jeho obsahových adresářů.
V tomto srovnání NGINX vs Apache uvidíme, který webový server umožňuje konfiguraci na úrovni adresáře.
Apache
Apache podporuje další konfiguraci na bázi jednotlivých adresářů prostřednictvím souborů .htaccess.
.htaccess soubory umožňují uživatelům, kteří nejsou privilegovaní, ovládat konkrétní aspekty vašeho webu, aniž by jim umožňovali upravovat hlavní konfigurační soubor.
To je důvod, proč mnoho poskytovatelů sdíleného hostingu používá Apache k tomu, aby svým klientům umožnili přístup ke konkrétním adresářům a zároveň si zachovali kontrolu nad hlavním konfiguračním souborem.
Apache také interpretuje .htaccess soubory pokaždé, když jsou nalezeny na cestě požadavku, což znamená, že mohou být implementovány okamžitě bez opětovného načítání webového serveru.
Používání .htaccess má však několik nevýhod soubory. Jedním z nich je, že může ovlivnit výkon vašeho webu, protože Apache načítá každý .htaccess soubor pro každou žádost o dokument. To může být zabijákem zdrojů, zejména pro weby s velkým provozem.
Další věc, kterou je třeba zvážit před použitím .htaccess soubory je, že umožnění jiným uživatelům měnit konfiguraci serveru může vést k bezpečnostním chybám.
Pokud tedy nepotřebujete udělit přístup ke konfiguraci vašeho serveru jiným stranám, nezapomeňte deaktivovat .htaccess soubory.
NGINX
Na rozdíl od Apache NGINX nepodporuje konfiguraci na úrovni adresáře. I když se to může zdát jako nevýhoda, funguje to ve prospěch uživatelů, protože to pomáhá zvýšit výkon webu.
Protože je NGINX navržen tak, aby byl efektivní, nemusí hledat .htaccess soubory a interpretovat je, takže je schopen obsloužit požadavek rychleji než Apache.
NGINX udržuje váš server v bezpečí tím, že neumožňuje další konfiguraci, protože nastavení vašeho serveru a webu může měnit pouze někdo s oprávněním root.
Moduly v Apache vs. Moduly v NGINX
Většina webových serverů je dodávána se standardním konfiguračním souborem. Někdy si však vývojáři webu mohou přát zahrnout moduly, které usnadní programování nebo rozšíří funkčnost webového serveru.
Ačkoli jsou NGINX a Apache oba rozšiřitelné prostřednictvím modulového systému, způsob jejich práce se značně liší.
Apache
Apache je přizpůsobitelný webový server, který nabízí více než 50 oficiálních dynamicky načítatelných modulů , které mohou být použity, kdykoli je uživatelé potřebují. Kromě toho je snadné najít další moduly třetích stran na internetu.
Zatímco základní funkce serveru Apache jsou vždy dostupné, moduly lze načítat a uvolňovat a upravovat tak některé z hlavních funkcí tohoto webového serveru.
Dynamické moduly Apache mohou provádět různé úkoly, jako je zpracování dynamického obsahu, nastavení proměnných prostředí a přepisování adres URL.
Zde jsou některé z nejčastěji používaných modulů Apache:
- mod_headers – umožňuje ovládat a přizpůsobovat hlavičky HTTP požadavků a odpovědí v Apache.
- mod_expires – umožňuje uživatelům definovat intervaly vypršení platnosti pro různé typy obsahu na webových stránkách.
- mod_authz_host – umožňuje řízení přístupu a autorizaci na základě názvu hostitele, IP adresy nebo charakteristik požadavku.
- mod_mime – pomáhá přiřadit metainformace obsahu s příponami souborů.
- alias modu – umožňuje uživatelům informovat klienty, že požadovaná adresa URL je nesprávná.
Mějte na paměti, že Apache je dodáván s předpřipravenými moduly a načítá je do paměti serveru. Proto se ujistěte, že jste deaktivovali funkce, které nepotřebujete, abyste snížili spotřebu zdrojů.
NGINX
NGINX nabízí více než 100 modulů třetích stran integrovat do základního softwaru. Uživatelé, kteří dobře rozumí jazyku C, mohou také vytvářet moduly NGINX, které vyhovují potřebám jejich projektu.
Moduly NGINX však nejsou dynamicky načítatelné protože je třeba je zkompilovat v samotném základním softwaru. Aby se moduly načítaly dynamicky, uživatelé se musí rozhodnout pro NGINX Plus.
Díky tomu je NGINX méně flexibilní než Apache, výsledkem je lepší zabezpečení, protože integrace mnoha dynamických modulů může představovat určitá bezpečnostní rizika.
Zabezpečení pomocí Apache a NGINX
Je důležité vybrat si bezpečný a spolehlivý webový server, který dokáže udržet vaše data na webu v bezpečí a je pravidelně aktualizován o všechny nejnovější opravy.
Apache
Apache Software Foundation se aktivně snaží eliminovat jakékoli bezpečnostní problémy týkající se jejího softwaru, aby byl server Apache HTTP v bezpečí. Uživatelé se mohou přihlásit k odběru mailing listu Apache Server Announcements, aby byli informováni o nejnovějších aktualizacích od týmu vývoje softwaru.
Apache také obsahuje některá nastavení konfigurace, která mohou pomoci zvládnout útoky typu denial-of-service (DoS), jako například:
- Časový limit – definuje počet sekund, po které bude Apache čekat na konkrétní události, než požadavek selže. Webové stránky, které jsou vystaveny útokům DoS, by měly toto číslo nastavit na několik sekund.
- RequestReadTimeout – ukončí připojení od klientů, kteří neodesílají své požadavky dostatečně rychle.
- KeepAliveTimeout – určuje, jak dlouho bude server Apache čekat a udržovat připojení otevřené pro nový požadavek.
Mějte na paměti, že ačkoli je Apache navržen tak, aby byl bezpečný a stabilní, zabezpečení vašeho serveru závisí také na tom, jak tento server nakonfigurujete. Zvažte proto přijetí některých dalších bezpečnostních opatření, jako je instalace webového aplikačního firewallu (WAF).
NGINX
NGINX také nabízí několik bezpečnostních ovládacích prvků ihned po vybalení. Jedním z nich je omezování rychlosti, které snižuje rychlost příchozích požadavků na hodnotu typickou pro skutečné klienty a pomáhá chránit váš server před útoky DDoS.
Omezení rychlosti NGINX se také používá k ochraně upstreamových aplikačních serverů před příliš mnoha požadavky uživatelů najednou.
Kromě toho mohou uživatelé NGINX zabránit útokům DDoS povolením nebo zamítnutím přístupu na základě IP adres klientů. Tento přístup může být také omezen heslem, výsledkem dílčího požadavku nebo šířkou pásma.
A co víc, NGINX podporuje nejnovější verzi zabezpečení transportní vrstvy (TLS), která nabízí spolehlivé šifrování dat odesílaných přes internet.
Chcete-li získat více funkcí zabezpečení, zvažte použití NGINX Plus. S touto prémiovou verzí získáte přístup k funkci jednotného přihlášení (SSO), která vám umožní bezpečně se autentizovat s více weby a aplikacemi pomocí jedné sady přihlašovacích údajů.
Kromě toho mohou uživatelé NGINX přejít na webovou stránku tohoto open-source serveru, kde najdou další bezpečnostní rady a novinky o nejnovějších aktualizacích.
Podpora platformy
Ti, kdo jsou ve světě vývoje webu noví, by měli zajistit, aby jim vybraný webový server poskytoval pomoc a podporu. To umožňuje pomoc při řešení problémů se softwarem.
Apache
Apache nabízí rozsáhlou dokumentaci, která pokrývá různá témata o tomto softwaru.
Nabízí také komunitní podporu prostřednictvím e-mailu, což uživatelům umožňuje získat pomoc od lidí obeznámených s Apache HTTPD.
Uživatelé mohou také klást rychlé otázky na Stack Overflow a #httpd kanál v síti Freenode IRC.
NGINX
Aby uživatelům pomohla vyřešit jakékoli problémy s vývojem, NGINX poskytuje mailing list provozovaný a moderovaný komunitou. Kromě toho nabízí svým uživatelům veřejné fórum podpory.
Vzhledem k mnoha uživatelům NGINX je také snadné najít další komunitní fóra, kde vývojáři sdílejí, jak opravit technické problémy.
NGINX také poskytuje mnoho výukových zdrojů, které začátečníkům pomohou dozvědět se více o tomto softwaru, jako jsou blogy, glosáře, dokumentace, elektronické knihy, webové semináře a datové listy.
Kromě toho mohou uživatelé, kteří používají NGINX Plus, také získat specializovanou podporu od týmu, připravenou pomoci s instalací a nasazením.
Výběr webového serveru
Po srovnání NGINX vs. Apache je jasné, že každý software má výhody i nevýhody. Proto je nezbytné znát své potřeby, než se rozhodnete mezi NGINX nebo Apache.
Apache je vhodný pro sdílený hosting prostředí. Nabízí root přístup k úpravě hlavního konfiguračního souboru, což umožňuje neprivilegovaným uživatelům ovládat několik aspektů serveru.
Nevýhodou je, že tento software může spotřebovat hodně paměti serveru .
Pokud jde o NGINX, má lepší výkon než Apache při zpracování požadavků na statický obsah. Může také obsloužit mnoho klientů najednou při vysokém zatížení, takže je vynikající volbou pro web s velkým objemem provozu.
NGINX je navíc multifunkční – uživatelé jej mohou používat jako reverzní proxy, nástroj pro vyrovnávání zatížení a řešení pro ukládání do mezipaměti.
Tento software však ve výchozím nastavení nemůže poskytovat dynamický obsah a potřebuje proxy všechny požadavky na dynamický obsah na back-end aplikační server.
Pamatujte, že existuje mnoho dalších oblíbených webových serverů, ze kterých si můžete vybrat, které mohou mít více, než co vám konkrétně mohou nabídnout Apache a NGINX. Některé z nich jsou Tornado , Node.js a Tomcat.
Můžou Apache a NGINX spolupracovat?
Je možné provozovat NGINX a Apache společně a využívat přednosti každého serveru – NGINX pro jeho vysokou rychlost zpracování a Apache pro jeho výkonné moduly.
Běžnou praxí při používání obou softwarů je umístit NGINX jako reverzní proxy před Apache protože dokáže zpracovat stovky připojení současně.
Jako front-end proxy pro Apache bude NGINX zpracovávat všechny požadavky od klientů. Pokud například obdrží požadavek na statický obsah, NGINX předá soubory přímo klientovi.
Jako reverzní proxy server pro dynamický obsah předá NGINX požadavek Apache, který jej následně zpracuje a přes NGINX přenese konečný obsah klientovi.
Používání Apache a NGINX může snížit určité blokování, ke kterému obvykle dochází, když je vlákno nebo proces Apache obsazeno, což pomáhá zvýšit výkon vašeho serveru .
Závěr
Může být náročné rozhodnout se mezi Apache a NGINX, protože oba jsou svým způsobem výkonné. Například Apache poskytuje širokou škálu modulů, zatímco NGINX nabízí škálovatelnost a rychlost.
Hlavní rozdíl mezi webovými servery NGINX a Apache je v tom, že NGINX má architekturu řízenou událostmi, která zpracovává více požadavků v rámci jednoho vlákna, zatímco Apache je řízen procesem a vytváří vlákno pro každý požadavek. To umožňuje NGINX mít obecně lepší výkon.
Každý software má své klady a zápory, takže rozhodnutí, zda použít NGINX nebo Apache, bude zcela záviset na preferencích uživatele.
Pojďme si zrekapitulovat každý aspekt, který jsme porovnávali:
- Základní architektura – Apache vytváří jedno vlákno pro zpracování každého požadavku na připojení, zatímco jeden proces NGINX se může současně starat o více připojení.
- Výkon – NGINX při poskytování statického obsahu funguje rychleji než Apache, ale ke zpracování požadavků na dynamický obsah potřebuje pomoc jiného softwaru. Na druhou stranu Apache zvládne dynamický obsah interně.
- Konfigurace na úrovni adresáře – Apache je dodáván s .htaccess soubory, což uživatelům umožňuje provádět změny v konfiguraci svých stránek bez úpravy nastavení hlavního serveru. Mezitím NGINX nepodporuje konfiguraci na úrovni adresáře.
- Moduly – Moduly Apache lze načítat dynamicky, zatímco moduly NGINX je třeba zkompilovat v rámci základního softwaru.
- Zabezpečení – Apache i NGINX jsou bezpečné a spolehlivé. Mají také několik bezpečnostních nástrojů k ochraně webu před útoky DDoS.
- Podpora – Apache a NGINX nabízejí komunitní podporu a dokumentaci, která začátečníkům pomůže s jakýmikoli problémy.
Namísto výběru NGINX nebo Apache může být efektivnější využít ke zlepšení výkonu serveru oba software – NGINX jako reverzní proxy server pro zpracování požadavků na statický obsah a Apache jako back-end pro poskytování dynamického obsahu.
Doufáme, že vám tento článek pomohl pochopit, co jsou NGINX a Apache, jaké jsou mezi nimi rozdíly a kdy byste měli zvážit jejich použití.
Pokud máte další otázky týkající se NGINX a Apache, zanechte nám prosím níže komentář.