Vyhledávání na webu

Proč považuji Nginx za prakticky lepší než Apache


Podle posledního průzkumu webových serverů společnosti Netcraft, který byl proveden ke konci roku 2017 (přesně v listopadu), jsou Apache a Nginx nejrozšířenějšími webovými servery s otevřeným zdrojovým kódem na internetu.

Apache je bezplatný server HTTP s otevřeným zdrojovým kódem pro operační systémy typu Unix a Windows. Byl navržen jako bezpečný, efektivní a rozšiřitelný server, který poskytuje služby HTTP synchronizované s převládajícími standardy HTTP.

Od svého spuštění je Apache od roku 1996 nejoblíbenějším webovým serverem na internetu. Je to de facto standard pro webové servery v ekosystému Linux a open source. Noví uživatelé Linuxu obvykle snáze nastavují a používají.

Nginx (vyslovováno „Engine-x“) je bezplatný, open source, vysoce výkonný HTTP server, reverzní proxy a IMAP/POP3 proxy server. Stejně jako Apache také běží na operačních systémech typu Unix a Windows.

Dobře známý pro svůj vysoký výkon, stabilitu, jednoduchou konfiguraci a nízkou spotřebu zdrojů, se v průběhu let stal tak populární a jeho použití na internetu míří do vyšších výšin. Nyní je to webový server, který si vybírají zkušení správci systému nebo webmastery špičkových stránek.

Některé z rušných webů využívajících technologii:

  • Apache jsou: PayPal, BBC.com, BBC.co.uk, SSLLABS.com, Apple.com a mnoho dalších.
  • Nginx jsou: Netflix, Udemy.com, Hulu, Pinterest, CloudFlare, WordPress.com, GitHub, SoundCloud a mnoho dalších.

Na webu již bylo zveřejněno mnoho zdrojů týkajících se srovnání mezi Apache a Nginx (opravdu mám na mysli články „Apache vs Nginx“). z nichž jasně do detailu vysvětlují jejich hlavní vlastnosti a operace v různých scénářích včetně měření výkonnosti v laboratorních benchmarcích. Proto to zde nebude řešeno.

Jednoduše se podělím o své zkušenosti a myšlenky z celé debaty, když jsem vyzkoušel Apache a Nginx, oba v produkčním prostředí založeném na požadavcích na hostování moderních webových aplikací, v příštím sekce.

Důvody, proč považuji Nginx za prakticky lepší než Apache

Níže jsou uvedeny důvody, proč preferuji webový server Nginx před Apache pro doručování moderního webového obsahu:

1. Nginx je lehký

Nginx je jedním z lehkých webových serverů. Má malé nároky na systém ve srovnání s Apache, který implementuje širokou škálu funkcí nezbytných ke spuštění aplikace.

Protože Nginx dává dohromady několik základních funkcí, spoléhá se na vyhrazené upstream webové servery třetích stran, jako je backend Apache, FastCGI, Memcached, SCGI a uWSGI servery nebo aplikační server, tj. servery specifické pro daný jazyk, jako je Node.js, Tomcat. , atd.

Proto je jeho využití paměti mnohem vhodnější pro nasazení s omezenými prostředky než Apache.

2. Nginx je navržen pro vysokou souběžnost

Na rozdíl od vláknové nebo procesně orientované architektury Apache (process-per-connection nebo thread-per-connection model), Nginx používá škálovatelnou, událostmi řízenou (asynchronní) architekturu. Využívá odpovědný procesní model, který je přizpůsoben dostupným hardwarovým zdrojům.

Má hlavní proces (který provádí privilegované operace, jako je čtení konfigurace a vazba na porty) a který vytváří několik pracovních a pomocných procesů.

Každý z pracovních procesů může zpracovávat tisíce připojení HTTP současně, číst a zapisovat obsah na disk a komunikovat s upstream servery. Pomocné procesy (správce mezipaměti a zavaděč mezipaměti) mohou spravovat operace ukládání obsahu do mezipaměti na disku.

Díky tomu jsou jeho operace škálovatelné a výsledkem je vysoký výkon. Díky tomuto konstrukčnímu přístupu je navíc rychlý a vhodný pro moderní aplikace. Kromě toho lze k rozšíření nativních funkcí v Nginx použít moduly třetích stran.

3. Nginx se snadno konfiguruje

Nginx má jednoduchou strukturu konfiguračních souborů, takže se velmi snadno konfiguruje. Skládá se z modulů, které jsou řízeny direktivami specifikovanými v konfiguračním souboru. Direktivy se navíc dělí na blokové a jednoduché.

Bloková směrnice je definována složenými závorkami ({ a }). Pokud direktiva bloku může mít další direktivy ve složených závorkách, nazývá se to kontext, jako jsou události, http, server a umístění.

http {
	server {
		
	}
}

Jednoduchá direktiva se skládá z názvu a parametrů oddělených mezerami a končí středníkem (;).

http {
	server {
		location / {
				
				## this is simple directive called root
			   	root  /var/www/hmtl/example.com/;

		}
		
	}
}

Vlastní konfigurační soubory můžete zahrnout například pomocí direktivy include.

http {
	server {

	}
	## examples of including additional config files
	include  /path/to/config/file/*.conf;
	include  /path/to/config/file/ssl.conf;
}

Praktickým příkladem pro mě bylo, jak se mi podařilo snadno nakonfigurovat Nginx tak, aby provozoval více webů s různými verzemi PHP, což byl s Apache trochu problém.

4. Nginx je vynikající frontend proxy

Jedním z běžných použití Nginx je jeho nastavení jako proxy server, v tomto případě přijímá HTTP požadavky od klientů a předává je výše zmíněným proxy nebo upstream serverům přes různé protokoly. Můžete také upravit hlavičky požadavků klientů, které se odesílají na server proxy, a nakonfigurovat ukládání do vyrovnávací paměti odpovědí přicházejících ze serverů proxy.

Poté přijímá odpovědi z proxy serverů a předává je klientům. Ve srovnání s Apache je mnohem snazší nakonfigurovat jako proxy server, protože požadované moduly jsou ve většině případů ve výchozím nastavení povoleny.

5. Nginx je pozoruhodný pro poskytování statického obsahu

Statický obsah nebo soubory jsou obvykle soubory uložené na disku v počítači serveru, například soubory CSS, soubory JavaScript nebo obrázky. Podívejme se na scénář, kdy používáte Nginx jako frontend pro Nodejs (aplikační server).

Přestože server Nodejs (konkrétně rámce Node) má vestavěné funkce pro manipulaci se statickými soubory, nemusí provádět žádné intenzivní zpracování, aby dodal nedynamický obsah, a proto je prakticky výhodné nakonfigurovat webový server tak, aby poskytoval statický obsah přímo klientů.

Nginx dokáže mnohem lépe pracovat se statickými soubory z konkrétního adresáře a může zabránit tomu, aby požadavky na statická aktiva škrtily upstream serverové procesy. To výrazně zlepšuje celkový výkon backendových serverů.

6. Nginx je efektivní nástroj pro vyrovnávání zatížení

Pro dosažení vysokého výkonu a provozuschopnosti moderních webových aplikací může být vyžadováno spuštění více instancí aplikací na jediném nebo distribuovaných HTTP serverech. To může zase vyžadovat nastavení vyvažování zátěže pro rozložení zátěže mezi vaše HTTP servery.

Vyrovnávání zátěže se dnes stalo široce používaným přístupem pro optimalizaci využití zdrojů operačního systému, maximalizaci flexibility, snížení latence, zvýšení propustnosti, dosažení redundance a vytvoření konfigurací odolných proti chybám – napříč více instancemi aplikací.

Nginx používá následující metody vyrovnávání zátěže:

  • round-robin (výchozí metoda) – požadavky na upstream servery jsou distribuovány způsobem round-robin (v pořadí podle seznamu serverů v upstream fondu).
  • nejméně připojeno – zde je další požadavek přesměrován na server s nejmenším počtem aktivních připojení.
  • ip-hash – zde se hashovací funkce používá k určení, jaký server by měl být vybrán pro další požadavek (na základě IP adresy klienta).
  • Generický hash – u této metody správce systému specifikuje hash (nebo klíč) s daným textem, proměnnými požadavku nebo runtime nebo jejich kombinací. Klíčem může být například zdrojová IP a port nebo URI. Nginx pak rozděluje zatížení mezi upstream servery vygenerováním hashe pro aktuální požadavek a jeho umístěním proti upstream serverům.
  • Nejméně času (Nginx Plus) – přiřadí další požadavek nadřazenému serveru s nejmenším počtem aktuálních připojení, ale upřednostňuje servery s nejnižší průměrnou dobou odezvy.

7. Nginx je vysoce škálovatelný

Kromě toho Nginx je vysoce škálovatelný a moderní webové aplikace, zejména podnikové aplikace, vyžadují technologii, která poskytuje vysoký výkon a škálovatelnost.

Jedna společnost, která těží z úžasných funkcí škálovatelnosti Nginx, je CloudFlare. Podle Matthewa Prince se jí podařilo škálovat své webové aplikace tak, aby zvládly více než 15 miliard zobrazení stránek měsíčně s relativně skromnou infrastrukturou., spoluzakladatel a generální ředitel společnosti CloudFare.

Podrobnější vysvětlení najdete v tomto článku na blogu Nginx: NGINX vs. Apache: Náš pohled na deset let starou otázku.

Závěr

Jak Apache, tak Nginx nelze vzájemně nahradit, mají své silné a slabé stránky. Nginx však nabízí výkonnou, flexibilní, škálovatelnou a bezpečnou technologii pro spolehlivé a efektivní napájení moderních webových stránek a webových aplikací. Jaký je váš názor? Dejte nám vědět prostřednictvím formuláře pro zpětnou vazbu níže.