Najpoužívanejšie webové servery – Apache vs. Nginx


  • Zdieľať na Google+

V nasledujúcom článku si predstavíme dva najrozšírenejšie a najpoužívanejšie webové servery. Zároveň si povieme, aký je medzi nimi rozdiel a na čo sa hodia.

Čo je to webový server?

Webový server sa stará o predávanie súborov nášmu prehliadaču. Napríklad keď prehliadač pošle požiadavku na načítanie webovej stránky, webový server túto požiadavku obslúži a vráti všetky požadované súbory (obrázky, HTML súbory,…) späť prehliadaču pomocou protokolu HTTP. Funguje ako prostredník medzi serverom a našim zariadením. Aj keď sa nazývajú ako webové servery, v skutočnosti ide o software bežiaci na fyzickom alebo virtuálnom serveri. Takýto webový server musí zvládnuť obslúžiť niekoľko naraz pripojených používateľov, ktorí sa dopytujú na súbory z fyzického servera.

Apache a Nginx sú dva najznámejšie open-source webové servery. Spolu poháňajú viac ako 50% webov na svete. Aj keď oba slúžia rovnakému účelu, sú medzi nimi rozdiely v spôsobe ako pracujú a na aký účel sa hodia.

Apache

Apache vyvíja viacero metód na spracovanie požiadaviek (requestov), aby boli efektívne hlavne z pohľadu vyťaženia pamäte RAM, CPU a latencie. Apache pre spojenie s klientom vytvára procesy nazývané MPM moduly, ktoré sú zodpovedné za prijímanie requestov a následne priradenie pod-procesov (child procesov) na spracovanie requestu. Toto môže byť nevýhoda pre Apache, hlavne pri weboch s vysokou návštevnosťou, keďže každý nový proces, ktorý sa vytvorí pri novom spojení si odkrojí z RAM-ky a tiež vyťažuje CPU.

Nginx

Nginx je novší webový server (prvá verzia je z roku 2004), ktorý ako prvý vyriešil C10K problém. Naraz sa mu podarilo spracovať 10 000 súčasne pripojených spojení na jednom serveri. Vďaka asynchrónnej, event-driven (udalosťami riadenej) architektúre dokáže pracovať oveľa efektívnejšie s pamäťou RAM a CPU. Hlavný rozdiel oproti Apache je spôsob ako vytvára nové procesy. Zatiaľ čo Apache pre každé nové spojenie vytvára aj nový proces, Nginx vytvára proces, ktorý dokáže spracovať tisícky nových spojení.

Okrem open source verzie existuje aj komerčná s názvom Nginx Plus – pri nej je možné si zabezpečiť technickú podporu a ďalšiu funkcionalitu ako Active health checks, DNS service discovery integration, Cache Purging API, AppDynamic, Key-Value Store, web application firewall (WAF) dynamic module a mnohé ďalšie

Dynamické a statické súbory

Apache vie spracovať dynamický obsah v rámci jeho procesov. Napríklad PHP alebo iné dynamické súbory nemusí spracovávať externý komponent. Nginx dynamické súbory spracovať nevie a musí sa spoliehať na externé komponenty, ktorým pošle dynamický obsah. Tam sa následne spracujú na statické súbory (HTML, obrázky…) a pošlú naspäť Nginx-u, ktorý pošle spracovaný obsah nášmu prehliadaču. Oba, však dokážu dynamický obsah spracovať rovnako rýchlo.

Najväčší rozdiel v rýchlosti je vidieť pri spracovaní statických súborov. Nginx vie omnoho rýchlejšie pracovať so statickými súbormi, podľa niektorých benchmarkov až 2,5x rýchlejšie. Preto ak na webe máte veľa statického obsahu a vysokú návštevnosť odporúča sa siahnuť po Nginx-e.

Poznámka

Ak vás zaujímajú databázové systémy odporúčame aj naše porovnanie MySQL a MariaDB.

Ďalšie rozdiely

Apache svoje moduly napríklad pre URL prepisovanie, zabezpečenie, cachovanie atď. načítava dynamicky bez nutnosti reštartovania. Tiež ho vieme konfigurovať rozdielne len pre určité priečinky pomocou súboru .htaccess. Toto riešenie je vhodné najmä ak na našom serveri beží viacero webov pre ktoré chceme mať rôzne nakonfigurovaný web server.

Nginx je v tomto smere menej flexibilný, čo je spôsobené práve aj históriou. Upravovať rewrite pravidlá môže byť veľmi náročné a nie vždy sa to môže úplne podariť. Je vhodné si vopred preveriť, či aplikácia ktorú chcete prevádzkovať vie správne fungovať aj pod Nginx.

Podpora operačných systémov

Apache pracuje na Unixových systémoch a rovnako má aj plnú podporu pre Windows. Nginx na Unixových systémoch beží bez problémov, avšak pre Windows nemá plnú podporu a tiež nemôžeme počítať s jeho vysokým výkonom.

Zhrnutie

Pri výbere webového servera musíme zvážiť vyššie spomenuté faktory. Treba si zvoliť riešenie, ktoré bude vyhovovať našim potrebám. Apache aj Nginx môžu bežať spoločne a využiť výhody oboch. Takéto riešenie využívame aj u nás vo WebSupporte. Viac v článku Nginx + Apache na jednom Ubuntu 18.04 LTS serveri.