Webszerver

A webszerver vagy webkiszolgáló egy olyan hardver/szoftver páros, amely lehetővé teszi a rajta tárolt webes tartalmak megjelenítését a HTTP protokollon keresztül. Mivel egy kliens/szerver alkalmazásról van szó, szükség van egy webes böngésző programra is a felhasználói (kliens) oldalon, amellyel csatlakozni lehet a webszerverhez és megjeleníteni a tartalmakat. A szolgáltatás igényei szerint a webszerver lehet egy célszámítógép direkt a webszerver program futtatásához, vagy egy általános célú számítógép, amelyen a szerverprogram a háttérben fut, de ettől még használható egyéb célra is.

Számos webszerver szoftver létezik, de az alapvető funkciójuk ugyanaz, tehát fogadja a HTTP (Hyper Text Transfer Protocol) kéréseket a hálózatról (internetről, intranetről) és ugyanezen a protokoll keresztül válaszol a kérésekre. A webszerver válasza az esetek többségében egy HTML (Hyper Text Markup Language) dokumentum, de lehet egy kép vagy egy szöveges fájl is.

Egy webszerver, a klienstől (pl. webes böngészőtől) kapott kéréseket kétféleképpen értelmezheti. A kapott kérés általában egy URL (Universal Resourse Locator) cím. Ha a tartomány név (domain név, pl. http://www.akarmi.hu) után nem érkezik megadott mappa(struktúra) és/vagy fájlnév, akkor a webszerver beállításainál megadott alapértelmezett oldalt küldi vissza a webszerver a kliensnek. Ha konkrét URL és elérési út érkezik a kérésben, az nem feltétlenül kell egyezzen a webszerveren tárolt tényleges könyvtár- és fájlstruktúrával. Ilyenkor a webszerver előre definiált szabályok szerint formázni fogja a kért címet. Ez a megoldás több előnnyel is jár. Nem derül fény a fizikai mappaszerkezetre és fájlstruktúrára. Ha a lekérdezés során valamilyen hiba lép fel, például a kért fájl, vagy erőforrás nem létezik, arra egy felhasználóbarát hibaüzenettel reagálhatunk (pl. 404, kért fájl nem található). Egy másik lényeges szempont, hogy keresőbarát (SEF – Search Engine Friendly) URL-eket generálhatunk a keresőmotorok számára (Google, Yahoo, Bing, stb.). Az adatfeldolgozást és tartalom előállító fájlokat (PHP, ASP, CGI, PL, stb.) bárhol elhelyezhetjük a mappastruktúrában.

A könnyebb érthetőség kedvéért egy példán keresztül bemutathatjuk mi történik egy lekérdezés érkezésekor. A webszerhez érkezik egy HTTP lekérdezés:

http://www.akarmi.hu/utvonal/fajl.htm

A webszerver ekkor megfelelteti a kért útvonalat a tényleges fizikai mappa és fájlstruktúrával, amely általában a webszerver megfelelő gyökérkönyvtárában (pld. ./var/www/akarmi) található útvonallal. Amennyiben a webszerver beállításaiban a kért útvonal megfeleltethető a tényleges útvonallal, a szerver visszaküldi “fajl,htm” állományt a kliensek. Ellenkező esetben 404-es hibaüzenettel válaszol. A válaszban természetesen benne lesz az aktuálisan megfelelő URL is amely az adatfeldolgozás után érvényes.

A fentebb említett második megoldás esetében érkezik egy kérés a klienstől az alábbi formában:

www.akarmi.hu/utvonal/ferfiak_es_nok

Ezt a kérést a webszerver ekképpen alakíthatja át:

www.akarmi.hu/utvonal/lista.php?lista=ferfiakesnok

Ez utóbbi nem egy keresőbarát URL, illetve nehezen olvasható. Sok esetben a visszaküldött URL olyan adatokat is tartalmaz, amelyekre tulajdonképpen nincs szükség, mindössze az olvashatóságot és a keresőmotorok által könnyebb indexálást tesz lehetővé.

A kétféle lekérdezés oda-vissza működik.

A modern webszerverek esetében lehetőség van olyan lekérdezéseket is kezelni, amelyek a válasz elküldése előtt adatfeldolgozást igényelnek. Ezt olyan modulok végzik el, amelyeknek a rutinjai a honlapok HTML kódjába vannak beágyazva és a webszerver maga futtatja le azokat. Ilyen modulok a PHP, az ASP (a Microsoft IIS szerverek esetében), vagy a JSP. Régebben erre a célra a CGI-t (Common Gateway Interface) használták, ennek viszont nagyon nagy az erőforrás igénye. Manapság már nem divatos. Léteztek próbálkozások a gyorsabbá tételére (FastCGI), de ezeket a manapság használt rendszerek (PHP, ASP) kiszorították.

Áthidaló megoldásként léteznek megoldások amelyek a hagyományos CGI szkripteket a szerveren futtatják le. Ilyen például a mod_perl az Apache webszerverek esetében. Ilyenkor a PERL értelmező segítségével maga az Apache futtatja le. Ugyanígy működik a mod_php is a PHP szkriptek esetében.

A legnépszerűbb webszerver szoftverek közé tartozik elsősorban az Apache HTTP szerver, amely ma már számos platformon fut, nem csak Linux/Unix környezetben. Az interneten jelenleg ez a leginkább használatos, már 1996 óta. Az Apache jelenleg a webszerver szoftver piac felét tudhatja magáénak. Az utóbbi időben jelentős szerephez jutott a Microsoft IIS (Internet Information Services) a .NET platformja miatt. Az Apache “kistestvére” a lighthttpd is nagyon népszerű olyan esetekben, amikor nem kell hatalmas számú HTTP lekérést teljesíteni, illetve nem áll rendelkezésre komolyabb hardveres háttér. Az Nginx is egyre népszerűbb multiplatformos webszerver. Ha a költséghatékonyság a szempont, számos, ingyenes megoldás is választható, amelyek egy része nyílt forráskódú és GPL licence alatt van kiadva. Ilyenek az XServer, a SimpleW vagy a Cherokee HTTP Szerver.