Weboldal keresés

Miért találom az Nginxet gyakorlatilag jobbnak, mint az Apache?


A Netcraft legújabb, 2017 vége felé (pontosan novemberben) végzett webszerver-felmérés szerint az Apache és az Nginx a legszélesebb körben használt nyílt forráskódú webszerverek az interneten.

Az Apache egy ingyenes, nyílt forráskódú HTTP-kiszolgáló Unix-szerű operációs rendszerekhez és Windowshoz. Úgy tervezték, hogy biztonságos, hatékony és bővíthető szerver legyen, amely HTTP-szolgáltatásokat nyújt az uralkodó HTTP-szabványokkal szinkronban.

Indítása óta az Apache 1996 óta a legnépszerűbb webszerver az interneten. Ez a de facto szabvány a webszerverekhez a Linux és a nyílt forráskódú ökoszisztémában. Az új Linux-felhasználók általában könnyebben beállíthatók és használhatók.

Az Nginx (ejtsd: Engine-x) egy ingyenes, nyílt forráskódú, nagy teljesítményű HTTP-szerver, fordított proxy- és IMAP/POP3-proxyszerver. Az Apache-hoz hasonlóan Unix-szerű operációs rendszereken és Windowson is fut.

A nagy teljesítményéről, stabilitásáról, egyszerű konfigurációjáról és alacsony erőforrás-felhasználásáról jól ismert eszköz az évek során olyan népszerűvé vált, és az interneten való használata egyre magasabbra tör. Mostantól ez a webszerver a tapasztalt rendszergazdák vagy a legjobb webhelyek webmesterei között.

Néhány forgalmas webhely:

  • Az Apache a következők: PayPal, BBC.com, BBC.co.uk, SSLLABS.com, Apple.com és még sok más.
  • Az Nginx: Netflix, Udemy.com, Hulu, Pinterest, CloudFlare, WordPress.com, GitHub, SoundCloud és még sokan mások.

Számos forrás található már az interneten az Apache és az Nginx összehasonlításáról (igazából az "Apache vs Nginx" cikkekre gondolok), sok amelyek világosan részletesen ismertetik a legfontosabb jellemzőiket és műveleteiket különböző forgatókönyvek szerint, beleértve a laboratóriumi referenciaértékekben szereplő teljesítménymutatókat. Ezért ezzel itt nem foglalkozunk.

Egyszerűen megosztom tapasztalataimat és gondolataimat az egész vitáról, miután kipróbáltam az Apachet és az Nginxet, mindkettőt éles környezetben a modern webes alkalmazások tárolására vonatkozó követelmények alapján, a következőben. szakasz.

Okok, amiért az Nginxet gyakorlatilag jobbnak találom, mint az Apache-t

A következő okok miatt részesítem előnyben az Nginx webszervert az Apache helyett a modern webtartalom-szolgáltatáshoz:

1. Az Nginx könnyű

Az Nginx az egyik könnyű webszerver. Kis helyigénye van a rendszeren az Apache-hoz képest, amely az alkalmazások futtatásához szükséges funkciók széles skáláját valósítja meg.

Mivel az Nginx egy maroknyi alapvető funkciót állít össze, dedikált harmadik féltől származó upstream webszerverekre támaszkodik, mint például az Apache háttérrendszer, a FastCGI, a Memcached, az SCGI és az uWSGI kiszolgálók vagy alkalmazásszerverek, azaz nyelvspecifikus szerverek, mint például a Node.js, Tomcat stb.

Emiatt a memóriahasználata sokkal jobban megfelel korlátozott erőforrású telepítésekhez, mint az Apache.

2. Az Nginxet nagy párhuzamosságra tervezték

Az Apache szálas vagy folyamatorientált architektúrájával szemben (folyamat-kapcsolatonkénti vagy szál-kapcsolatonkénti modell) az Nginx méretezhető, eseményvezérelt (aszinkron) architektúrát használ. Felelős folyamatmodellt alkalmaz, amely a rendelkezésre álló hardvererőforrásokhoz van szabva.

Van egy fő folyamata (amely végrehajtja a kiemelt műveleteket, mint például a konfiguráció olvasása és a portokhoz való kötés), és számos dolgozó és segítő folyamatot hoz létre.

A dolgozói folyamatok egyidejűleg több ezer HTTP-kapcsolatot tudnak kezelni, tartalmat olvasni és lemezre írni, és kommunikálni a upstream szerverekkel. A segédfolyamatok (gyorsítótár-kezelő és gyorsítótár-betöltő) kezelhetik a lemezen lévő tartalom-gyorsítótárazási műveleteket.

Ez skálázhatóvá teszi a műveleteket, és nagy teljesítményt eredményez. Ez a tervezési megközelítés tovább gyorsítja, kedvezővé teszi a modern alkalmazások számára. Ezenkívül harmadik féltől származó modulok is használhatók az Nginx natív funkcióinak kiterjesztésére.

3. Az Nginx könnyen konfigurálható

Az Nginx egyszerű konfigurációs fájlstruktúrával rendelkezik, így rendkívül egyszerű a konfigurálása. Modulokból áll, amelyeket a konfigurációs fájlban megadott direktívák vezérelnek. Ezenkívül az irányelvek blokkirányelvekre és egyszerű irányelvekre vannak osztva.

A blokk direktívát kapcsos zárójelek határozzák meg ({ és }). Ha egy blokk direktívában más direktívák is lehetnek kapcsos zárójelben, akkor kontextusnak nevezzük, például események, http, szerver és hely.

http {
	server {
		
	}
}

Egy egyszerű direktíva a névből és a paraméterekből áll, szóközzel elválasztva, és pontosvesszővel (;) végződik.

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

		}
		
	}
}

Egyéni konfigurációs fájlokat is beilleszthet például az include direktíva használatával.

http {
	server {

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

Gyakorlati példa számomra az volt, hogyan sikerült egyszerűen beállítani az Nginx-et több webhely futtatására különböző PHP-verziókkal, ami egy kis kihívás volt az Apache-nál.

4. Az Nginx egy kiváló frontend proxy

Az Nginx egyik gyakori felhasználási módja proxyszerverként történő beállítása, ebben az esetben HTTP-kéréseket fogad az ügyfelektől, és különböző protokollokon keresztül továbbítja azokat a fent említett proxy- vagy upstream szervereknek. Módosíthatja a proxykiszolgálónak küldött ügyfélkérelem fejlécet is, és beállíthatja a proxykiszolgálóktól érkező válaszok pufferelését.

Ezután válaszokat kap a proxykiszolgálóktól, és továbbítja azokat az ügyfeleknek. Az Apache-hoz képest sokkal egyszerűbb proxyszerverként konfigurálni, mivel a szükséges modulok a legtöbb esetben alapértelmezés szerint engedélyezve vannak.

5. Az Nginx figyelemre méltó a statikus tartalom kiszolgálásában

A statikus tartalom vagy fájlok általában a szerver számítógép lemezén tárolt fájlok, például CSS-fájlok , JavaScript-fájlok vagy képek. Tekintsünk egy olyan forgatókönyvet, amelyben az Nginxet használja a Nodejs (az alkalmazáskiszolgáló) frontendjeként.

Bár a Nodejs szerver (különösen a Node keretrendszerek) beépített funkciókkal rendelkezik a statikus fájlkezeléshez, nem kell intenzív feldolgozást végezniük a nem dinamikus tartalom továbbításához, ezért gyakorlatilag célszerű a webszervert úgy konfigurálni, hogy a statikus tartalmat közvetlenül szolgálja ki. ügyfelek.

Az Nginx sokkal jobban képes kezelni egy adott könyvtár statikus fájljait, és meg tudja akadályozni, hogy a statikus eszközökre vonatkozó kérések elfojtsák az upstream szerverfolyamatokat. Ez jelentősen javítja a háttérkiszolgálók általános teljesítményét.

6. Az Nginx egy hatékony terheléselosztó

A modern webalkalmazások nagy teljesítményének és üzemidejének megvalósításához több alkalmazáspéldány futtatása is szükséges lehet egyetlen vagy elosztott HTTP-kiszolgálón. Ez viszont szükségessé teheti a terheléselosztás beállítását a terhelés elosztása érdekében a HTTP-kiszolgálók között.

Manapság a terheléselosztás széles körben használt megközelítéssé vált az operációs rendszer erőforrás-kihasználásának optimalizálására, a rugalmasság maximalizálására, a késleltetés csökkentésére, az átviteli sebesség növelésére, a redundancia elérésére és a hibatűrő konfigurációk létrehozására – több alkalmazáspéldányon keresztül.

Az Nginx a következő terheléselosztási módszereket használja:

  • round-robin (alapértelmezett módszer) – a felfelé irányuló szerverekhez intézett kérések körbefutó módon kerülnek elosztásra (a felfelé irányuló készletben lévő kiszolgálók listájának sorrendjében).
  • legkevesebb kapcsolat – itt a következő kérés a legkevesebb aktív kapcsolattal rendelkező szerverhez kerül proxyként.
  • ip-hash – itt egy hash-függvényt használnak annak meghatározására, hogy melyik szervert kell kiválasztani a következő kéréshez (az ügyfél IP-címe alapján).
  • Általános hash – ennél a módszernél a rendszergazda megad egy hash-t (vagy kulcsot) a megadott szöveggel, a kérés vagy a futási környezet változóival vagy ezek kombinációjával. A kulcs lehet például egy forrás IP és port vagy URI. Az Nginx ezután elosztja a terhelést a felfelé irányuló kiszolgálók között úgy, hogy létrehoz egy hash-t az aktuális kéréshez, és elhelyezi azt az upstream szerverek között.
  • Legrövidebb idő (Nginx Plus) – a következő kérést a legkevesebb jelenlegi kapcsolattal rendelkező upstream szerverhez rendeli, de a legalacsonyabb átlagos válaszidővel rendelkező szervereket részesíti előnyben.

7. Az Nginx nagyon skálázható

Ezenkívül az Nginx rendkívül méretezhető, és a modern webalkalmazások, különösen a vállalati alkalmazások nagy teljesítményt és méretezhetőséget biztosító technológiát igényelnek.

Matthew Prince szerint az egyik vállalat, amely az Nginx elképesztő skálázhatósági funkcióiból profitál, a CloudFlare., a CloudFare társalapítója és vezérigazgatója.

Átfogóbb magyarázatért tekintse meg ezt a cikket az Nginx blogon: NGINX vs. Apache: Our View of a Decade-Old Question.

Következtetés

Mind azApacheés azNginxnem helyettesíthető egymással, vannak erős és gyenge pontjaik. Az Nginx azonban hatékony, rugalmas, méretezhető és biztonságos technológiát kínál a modern webhelyek és webes alkalmazások megbízható és hatékony működtetéséhez. Mi a véleményed? Értesítsen minket az alábbi visszajelzési űrlapon keresztül.