Webszerver
A webkiszolgáló/webszerver egy kiszolgáló, mely elérhetővé teszi a helyileg (esetleg más kiszolgálón) tárolt weblapokat a HTTP protokollon keresztül. A HTTP webszerverekhez webböngészőkkel lehet kapcsolódni.
Egy webszerver két típusú lehet:
- egy erre a célra kialakított számítógép;
- egy számítógépes program, mely a háttérben futva biztosítja a weblapok elérését.
Általános funkciók
[szerkesztés]Bár a webszerverek többnyire különböznek a részletekben, alapvető funkcióik azonosak. Minden webszerver HTTP kéréseket fogad a hálózatról, és HTTP válaszokat küld vissza. A HTTP válasz az esetek többségében egy HTML dokumentum, de lehet még egyszerű szöveges fájl, kép, vagy más típusú fájl is.
Útvonalak feloldása
[szerkesztés]A webszerverek a klienstől kapott kérésekben többek között URL címet kapnak, melyet kétféleképpen értelmezhetnek:
- A tartománynév után álló relatív mappa és fájl struktúrát hozzárendelik egy gyökérmappához (a gyökérmappa a webszerver beállításaiban van megadva, és az adatokat kérő kliens számára láthatatlan).
- A tartománynév után álló relatív mappa és fájlstruktúra (vagy akár még a tartománynév is) teljesen független a kért címben szereplő struktúrától. Ebben az esetben meghatározott szabályok szerint formázza a kért címet. Ennek segítségével egy mappára irányuló kérés teljesen más mappára vagy akár egy fájlra is mutathat és fordítva. Előnyei a másik megoldással szemben:
- a relatív mappaszerkezet is rejtve marad,
- nem létező fájlok, mappák kérése esetén is tudunk reagálni átirányítással vagy egyéb jelzéssel (míg a másik megoldás esetén 404-es hibakóddal tudunk reagálni, amely nem túl felhasználóbarát),
- keresőrendszerek számára (például Google) előnyösebb címeket tudunk használni, és
- a feldolgozást végző fájlok (PHP, ASP stb.) a mappaszerkezettől független helyen is elhelyezkedhetnek.
A kliens például az alábbi URL-t kéri:
http://www.pelda.com/utvonal/fajl.html
A kliens webböngészője ezt értelmezve létrehoz egy kapcsolatot a www.pelda.com kiszolgálóval, és elküldi a következő HTTP 1.1 kérést:
GET /utvonal/fajl.html HTTP 1.1 Host: www.pelda.com …
A www.pelda.com címet megfelelteti a webszerver az adott gyökérmappához (például /var/www/pelda), amelyhez hozzáfűzi a /utvonal/fajl.html elérést – ezzel megtörtént a megfeleltetés a fájlrendszer erőforráshoz. A kért eredmény a szerveren tehát: /var/www/pelda/utvonal/fajl.html.
Ezt követően a webszerver ellenőrzi, hogy hozzáférhető-e az adott kérés, ill. hogy létezik-e. Ha nem létezett akkor 404-es hibakóddal tér vissza, ha hozzáférhető akkor beolvassa, elvégzi rajta az esetleges további műveleteket, majd elküldi a kliensnek. A válasz természetesen szintén magában foglalja a megfelelő fejlécet.
A második megoldás esetében, az erőforrásokhoz történő megfeleltetés előtt a címet átformázza. Például:
www.pelda.com/Toplista/kutyak+es+macskak Nyomtatási változat esetén: www.pelda.com/Nyomtatas/Toplista/kutyak+es+macskak
URL kérést a következőképpen alakíthatja át:
/var/www/pelda/toplista.php?cim=kutyak+es+macskak Nyomtatási cím esetén pedig:/var/www/pelda/nyomtat.php?cim=kutyak+es+macskak&hol=Toplista
Sok esetben a cím olyan adatokat is tartalmaz, amelyre a feldolgozáshoz nincs is szükség, ezek a felhasználónak és a keresőrendszereknek nyújtanak további információkat. Az első megoldás esetében egy átláthatatlan mappaszerkezet alakulna ki, amely kézben tarthatatlan és a fájlrendszert mint erőforrást is túlzott mértékben igénybe venné.
Modulok
[szerkesztés]Lehetőség van a válaszok feldolgozása előtt, az esetlegesen a kérésben érkezett adatok feldolgozására és ennek eredményének visszaküldésére. Ilyenkor a szerver oldalon futó webszerver-modulok illetve a webszerver által meghívott CGI rutinok végzik el ezt a feladatot. A programrészletek (webszerver-modulok) rendszerint, a HTML kódba vannak beágyazva és maga a webszerver-program hajtja ezeket végre. Ilyenek például a(z):
Ezenkívül léteznek még a CGI (Common Gateway Interface) rutinok, ami minden olyan program lehet, amely azon a rendszeren, ahol a webszerver fut, működőképes. Jelentősen lassabb a fenti megoldásnál, hiszen minden egyes futáskor az adott programnak a rendszer tárterületet, processzoridőt stb. kell adjon, ami nagyobb mennyiségű programnál jelentős sebességcsökkenést eredményez. Leginkább ez az oka, hogy ez a technika ma már kevéssé használatos.
Ennek a sebességproblémának a kiküszöbölésére fejlesztették ki a FastCGI-t, amely az erős konkurencia miatt (JSP, PHP) nem igazán terjedt el.
Vannak áthidaló megoldások, amelyek a "hagyományos" CGI programokat a webszerveren "belül" futtatják. A mod perl nevű Apache modul használatával például a Perl programok jelentős sebességnövekedéssel futtathatók, mivel így nem CGI-n keresztül futnak le, hanem csak az Apache és a Perl értelmező segítségével. Ma már szinte minden Apache szerverrel kiszolgált weblapon mod perl -t használnak a Perl szerveroldali szkriptek értelmezésére, mod php -t a PHP értelmezésére, és így tovább.
Szoftverek
[szerkesztés]A legnépszerűbb HTTP webszerverek a következők:
- Apache HTTP Server az Apache Software Foundation terméke.
- Internet Information Services (IIS) a Microsoft terméke.
- Nginx
- lighttpd
- Zeus Web Server a Zeus Technology terméke.
- Sun ONE a Sun Microsystems terméke.
- Cherokee HTTP Server – egy gyors és rugalmas webszerver, szabad szoftver.
- Xerver egy nyílt forráskódú, ingyenes, GPL licencelt szoftver.
- IBM Lotus Domino.
- MyServer egy gyors, biztonságos, sokoldalú webszerver, a MyServer Project terméke.
- Abyss X1 egy ingyenes webszerver PHP/Perl/ASP.NET/ASP és Ruby On Rails támogatással, Linux, Mac OS X és Microsoft Windows rendszerekre. Az Aprelium terméke.
Az Apache 1996 áprilisa óta a legnépszerűbb webszerver volt, mióta csak észszerű alternatíváját tudta nyújtani a Netscape Communications webszerverének (jelenlegi neve: Sun Java System Web Server). 2005 májusában még a piac 70%-át uralta[forrás?], 2006 márciusa óta azonban folyamatosan veszített piaci részesedéséből,[1] elsősorban a Microsoft IIS-ével és a .NET platformmal szemben, másodsorban gyors, kicsi, de nagy tudású nyílt forráskódú webszerverek terjedése miatt, mint például a lighttpd. 2007 szeptemberében az összes weboldal mintegy 50%-át Apache szolgálta ki, míg a Microsoft megoldása 35%-ot birtokolt.[2]
A statikus fájlok kiszolgálásában egyre meredekebb növekedési tendenciát mutat az Nginx kiszolgáló használata.
Külső hivatkozások
[szerkesztés]- RFC 2616 – A HTTP 1.1 protokoll leírása
- Netcraft Web Server Survey Archiválva 2010. május 20-i dátummal a Wayback Machine-ben – A webszerverek eloszlása
Jegyzetek
[szerkesztés]- ↑ Webservers' Market Shares. Netcraft. [2010. május 20-i dátummal az eredetiből archiválva]. (Hozzáférés: 2007. szeptember 20.)
- ↑ August 2007. Netcraft. [2007. szeptember 30-i dátummal az eredetiből archiválva]. (Hozzáférés: 2007. szeptember 20.)