Nginx - Bevezetés

Ezen cikk a tervek szerint egy sorozat része lesz, amely majd szép lassan (ahogy időm engedi) kerül ki a blogra.

Lássuk tehát az első részt, mely - ahogy a cím is utal rá - egyfajta általános bemutatása lesz ennek a pici webszervernek.

Mi az Nginx?

Az Nginx neve az angol Engine X (X motor) kifejezésből származik, ejteni is eszerint kell, tehát ˈen-jən eks.

Magát a motort egy Igor Sysoev nevű srác fejleszti 2002 óta, a kód maga 2004-ben lett nyilvános. Az elsődleges cél egy pehelysúlyú, ugynakkor skálázható webszerver létrehozása volt, mely képes egy online tartalomszolgáltatónál felmerülő legtöbb problémával megbirkózni, például az ún. C10K problémával, a legtöbb akkori webszervernek ugyanis problémát okozott egyidejűleg több, mint 10 000 kapcsolatot kezelni.

Jelenleg az Nginx a világ harmadik legnépszerűbb webszervere, a 2012-es NetCraft felmérés szerint az összes mért oldal 12.07%-át Nginx segítségével szolgálják ki.

Az Nginx előnyei

De mi teszi oly népszerűvé ezt a furcsa nevű webszervert? Mi az, amiért egyre-másra jelennek meg leírások, tutorialok hozzá, ami a legbiztosabb jele egy termék népszerűségének?

Az egyik kétségtelen ok a gyorsaság. Az Nginx statikus fájlok kiszolgálásában és proxyként is sokkal nagyobb sebességgel szolgál ki elődjeinél. A Wordpress.com mérései szerint - megfelelő gép mellett - az átlagos 70000 req/s simán elérhető vele.

Ennek az egyik oka az, hogy az Nginx nem feltétlenül forkol mindig külön processzt vagy szálat az új kapcsolatoknak, ahogy pl. az Apache egyes feldolgozómoduljai (prefork, ITK) teszik, sőt erre nincs is szüksége, mert eseményalapú a feldolgozása, így nem csak több kapcsolatot, de több eseményt is le tud egyetlen feldolgozó szál kezelni. Ennek köszönhető egyébként az is, hogy hasonló terhelés mellett a memóriaigénye messze elmarad a klasszikus webszerverekétől. Erről bővebben itt lehet olvasni.

A másik oka az, hogy az Nginx sokkal agresszívebben cachel a memóriában az elődjeinél. Megfelelő konfigurálás és többé-kevésbé fix (nem, vagy ritkán változó) tartalom mellett elérhető az, hogy gyakorlatilag a memóriából történjen a kiszolgálás.

A pufferelés egyébként nagyon sokrétűen konfigurálható, ugyanakkor nem a legkönnyebben emészthető téma.

Előnye még a jó minőségű dokumentáció. A legtöbb modulnak nagyon részletes dokumentációja van, néhány konkrét használati eseteket is bemutat, mely teljes biztonsággal átvehető egy az egyben a saját konfigurációnkba.

További előnyeként szokták sorolni a konfigurációs fájl könnyű érthetőségét. Akik valamilyen C szintaxisú nyelvben (PHP, Perl, C/C++, Java, stb) programoznak, azoknak nagyon is ismerős lehetnek a blokkok és a sorvégi pontosvesszök, melyekből a konfiguráció felépül.

A következő cikkben az Nginx és a PHP kapcsolatát fogom bemutatni, és példákon keresztül szemlélteni

Comments