Nginx je softwarový webový server, který má load management a reverzní proxy s otevřeným zdrojovým kódem. Protokoly, se kterými pracuje, jsou http, https, SMTP, POP3, IMAP nebo SSL. Zaměření je především na vysoký výkon spolu s nízkými nároky na paměť. Nginx je dostupný na Unix-like systémech pod BSD jako například v případě Unix, Linux, ale je dostupný i pro Solaris, macOS nebo MS Windows.

Vlastnosti Nginxu

Hlavním cílem Nginxu je rychlá distribuce statického obsahu a umožnění maximálního rozložení zátěže mezi další servery na základě nastavených priorit. Systém je zároveň uzpůsoben tak, že umožňuje definovat záložní server, na který pak může Nginx požadavek předat v případě, že primární server nedodá ve stanoveném limitu odpověď.

Přicházející požadavky jsou zpracovávány asynchronně, což se liší například od Apache, který používá systém vláken nebo procesů. Typickým způsobem použití je, že příchozí http nebo https požadavek se primárně pokouší vyhledat své cache, které má konfigurovatelnou velikost i dobu uchování. V případě, že svou cache najde, rovnou odešle odpověď.

V případě opačném se obrátí na jeden ze serverů patřících do definované sady. Tyto servery mají určenou prioritu. V případě, že server v rámci definovaného času nedoručí odpověď, obrátí se na server záložní.

Pokud je to možné, odpověď je uložena do cache a díky tomu pak může následující dotazy do vypršení nastaveného časového limitu zpracovávat z cache. Zároveň je možné nastavit limit počtu připojení z jedné IP adresy, což je základní obrana proti DDOS útokům.

Nginx je postaven na principu modulárního systému, je tedy možné moduly přidávat, ale často to s sebou nese nutnost rekompilace. Jedním z modulů je například GEO lokace. Ta umožňuje předávání požadavků na definované servery podle země, nebo naopak blokovat přístup na stránky z definovaných zemí.

Dalšími užitečnými moduly jsou například moduly pro přesměrování podle definované sady pravidel, zabezpečení stránky heslem, streaming ve formátech FLV nebo MP4 a podpora komprese gzip.

Srovnání Nginx a Apache

Nginx i Apache jsou mezi nejaktivněji používanými open-sourcovými servery na internetu.

Výhody použití Nginx

  • Méně náročný na zdroje. Nginx je oproti Apache serveru méně náročný na zdroje a paměť.
  • Výkonnost. Nginx dokáže zpracovat desetitisíce simultánních připojení s nízkým memory footprintem.
  • Lépe si poradí se statickým obsahem.
  • Lepší škálovatelnost.
  • Vhodnější pro stránky běžící na VPS.

Nevýhody použití Nginx

  • Menší komunitní podpora.
  • Menší počet dostupných modulů.

Výhody použití Apache

  • Širší škála dostupných modulů. Nginx má sice dostupné moduly pro všechny základní potřeby, ale Apache má v rámci dostupných modulů širší výběr.
  • Vhodnější pro využití při sdíleném hostingu.
  • Používanější. To, že je Apache server používanější s sebou nese širší komunitu a tím jednodušší řešení problémů a hledání tipů.
  • Umožňuje konfigurovat .htaccess soubor.
  • Administrativní konzole.

Nevýhody použití Apache

  • Náročnost na zdroje. Při vyšší zátěži konzumuje více RAM nežli Nginx.
  • Efektivita. Pro každý požadavek vytváří nové procesy, proto je méně efektivní.

Kdy použít Nginx a kdy Apache

Pokud hledáte maximální výkon při práci se statickým obsahem, bude obvykle lepší použít Nginx. Nginx zároveň vede v oblastech jako je škálovatelnost, streaming médií, VPS hosting nebo reverzní proxy.

Apache je vhodný, pokud je potřeba upravovat .htaccess soubor pro konfiguraci serveru, protože Nginx tuto možnost vůbec nepodporuje. Apache já zároveň lepší v případě prostředí sdíleného hostingu a nabízí kontrolní panel, který usnadňuje změny na straně serveru.