Načrtovanje in razvoj spletnih aplikacij

Spletni strežniki

Spletni strežnik (angl. web server) je računalniški sistem ali programska oprema, ki sprejema zahteve brskalnikov in drugih odjemalcev ter jim vrača spletne vsebine. Izraz lahko pomeni fizični oziroma navidezni strežnik ali pa program, ki obdeluje zahteve po protokolih HTTP in HTTPS.

Osnovna naloga spletnega strežnika je shranjevanje, obdelava in pošiljanje spletnih virov. To so lahko dokumenti HTML, slike, datoteke CSS, JavaScript, videoposnetki, dokumenti za prenos ali dinamično ustvarjena vsebina.

Pomni: Spletni strežnik ni nujno samo računalnik. Pogosto z izrazom spletni strežnik poimenujemo tudi program, na primer Apache, Nginx ali IIS, ki sprejema zahteve in vrača odgovore.

Osnovna pravila

  • Spletni strežnik sprejema zahteve odjemalcev, najpogosteje spletnih brskalnikov.
  • Na zahtevo vrne spletni vir, na primer HTML dokument, sliko, slogovno datoteko ali skripto.
  • Če zahtevanega vira ne najde, vrne ustrezno sporočilo o napaki, na primer 404 Not Found.
  • Statične datoteke lahko strežnik pošlje neposredno, dinamične vsebine pa pogosto pripravi skupaj z aplikacijskim okoljem.
  • Sodobni spletni strežniki pogosto skrbijo tudi za HTTPS, preusmeritve, stiskanje, predpomnjenje in posredovanje zahtevkov drugim storitvam.

Pozor: Brskalnik in spletni strežnik nimata enake naloge. Brskalnik zahteva in prikaže vsebino, spletni strežnik pa zahtevo sprejme, jo obdela in vrne odgovor.

Delovanje spletnega strežnika

Ko uporabnik v brskalnik vpiše spletni naslov, brskalnik najprej poišče ustrezen IP naslov strežnika, nato pa pošlje zahtevo za določen vir. Strežnik zahtevo obdela in vrne odgovor.

Odgovor je lahko uspešen, na primer spletna stran, slika ali datoteka CSS. Lahko pa strežnik vrne tudi sporočilo o napaki, kadar vir ne obstaja, kadar uporabnik nima dovoljenja za dostop ali kadar pride do napake pri izvajanju na strežniku.

  1. Uporabnik v brskalniku odpre spletni naslov.
  2. Brskalnik pošlje zahtevo spletnemu strežniku.
  3. Strežnik poišče ali ustvari zahtevano vsebino.
  4. Strežnik pošlje odgovor brskalniku.
  5. Brskalnik prejete podatke prikaže uporabniku.

Pomni: Pri dinamični strani strežnik vsebine pogosto ne pošlje kot že pripravljeno datoteko, ampak jo pred pošiljanjem sestavi s pomočjo strežniškega jezika, podatkovne baze ali druge aplikacijske storitve.

Statične in dinamične spletne vsebine

Vrsta vsebine Pomen Primer
statična vsebina strežnik pošlje že pripravljeno datoteko HTML dokument, slika, CSS datoteka
dinamična vsebina vsebina se ustvari ob zahtevi stran s podatki iz baze, prijava uporabnika, spletna trgovina

Pri statičnih vsebinah je naloga strežnika razmeroma preprosta: poišče datoteko in jo pošlje. Pri dinamičnih vsebinah pa pogosto sodelujejo še programska koda, podatkovna baza in dodatne storitve.

Uporaba spletnih strežnikov

Na internetu se uporablja več različnih spletnih strežnikov in sorodnih strežniških rešitev. Med najbolj znanimi so:

  • Apache HTTP Server,
  • Nginx,
  • Microsoft IIS,
  • Cloudflare Server,
  • LiteSpeed,
  • Node.js v vlogi strežniškega izvajalnega okolja za spletne aplikacije.
Uporaba spletnih strežnikov

Primer primerjave uporabe spletnih strežnikov

Sodobni spletni strežniki se pogosto uporabljajo skupaj z oblačnimi storitvami, omrežji za dostavo vsebin, vsebniki in aplikacijskimi strežniki. Zato spletni strežnik ni več namenjen samo prikazu klasičnih spletnih strani, ampak tudi varni in učinkoviti dostavi spletnih aplikacij ter storitev.

Spletni strežnik Apache

Apache HTTP Server je eden najbolj znanih odprtokodnih spletnih strežnikov. Dolga leta je bil zelo pogosta izbira za gostovanje spletišč, še danes pa je pomemben zaradi razširljivosti, dokumentacije in številnih modulov.

Apache je primeren za klasična dinamična spletišča, še posebej v povezavi s PHP in podatkovnimi bazami. Njegova velika prednost je modularna zasnova, saj lahko z moduli dodamo podporo za preusmeritve, varnostne nastavitve, stiskanje, preverjanje pristnosti in druge funkcije.

Apache je na voljo za različne operacijske sisteme, na primer Linux, Unixu podobne sisteme in Windows. Pogosto ga uporabljamo tudi v lokalnih razvojnih okoljih.

Namestitev lokalnega spletnega strežnika Apache

Namestitev spletnega strežnika Apache, PHP in MySQL na lokalni računalnik.

Opis postopka namestitve paketa XAMPP.

Nginx

Nginx je odprtokodni spletni strežnik, znan po hitrosti, učinkoviti porabi sistemskih virov in zmožnosti dela z velikim številom hkratnih povezav. Poleg strežbe spletnih strani se pogosto uporablja tudi kot reverzni proxy, uravnalnik obremenitve in predpomnilnik.

Nginx je razširjen v sodobnih spletnih aplikacijah, mikroservisnih arhitekturah in sistemih z velikim prometom. Uporaben je za strežbo statične vsebine, posredovanje zahtevkov aplikacijskim strežnikom in dostavo vsebin prek HTTPS.

Lastnosti Nginx-a

  • dogodkovna arhitektura in učinkovito delo z velikim številom povezav,
  • uporaba kot spletni strežnik ali reverzni proxy,
  • podpora za predpomnjenje in uravnavanje obremenitve,
  • podpora za HTTPS oziroma TLS,
  • možnost preusmeritev in preoblikovanja URL naslovov,
  • stiskanje odgovorov za manjšo porabo pasovne širine,
  • možnost omejevanja zahtevkov in dodatne varnostne nastavitve.

Pomni: Reverzni proxy sprejme zahtevo uporabnika in jo posreduje naprej ustrezni notranji storitvi. Uporabnik praviloma ne vidi neposredno, kateri notranji strežnik je zahtevo dejansko obdelal.

IIS – Internet Information Services

IIS (Internet Information Services) je Microsoftov spletni strežnik za operacijske sisteme Windows. Namenjen je gostovanju spletnih strani, spletnih aplikacij in drugih internetnih storitev.

IIS se pogosto uporablja v okoljih, kjer prevladujejo Microsoftove tehnologije, kot sta Windows Server in ASP.NET. Njegova prednost je dobra povezanost z okoljem Windows, grafično upravljanje in uporaba orodij za administracijo ter avtomatizacijo.

Zgodovina IIS

  • IIS se je razvijal skupaj z operacijskimi sistemi Windows NT in Windows Server.
  • Kasnejše različice so prinesle modularno arhitekturo, boljšo varnost in lažje upravljanje.
  • Danes se IIS uporablja predvsem v okoljih, kjer je pomembna tesna povezava z Microsoftovimi strežniškimi tehnologijami.
Upravljalna konzola Internet Information Services (IIS)

Primer upravljalne konzole Internet Information Services (IIS)

IIS Express

IIS Express je lažja različica IIS-a, namenjena predvsem razvoju in testiranju spletnih aplikacij na lokalnem računalniku. Omogoča uporabo pomembnih funkcij IIS brez zahtevnejše namestitve celotnega strežniškega okolja.

IIS Express je uporaben predvsem pri razvoju spletnih aplikacij v okolju Windows in je pogosto povezan z razvojnimi orodji, kot je Visual Studio.

Cloudflare Server

Cloudflare Server je oznaka, ki jo pri analizah uporabe spletnih strežnikov pogosto srečamo pri spletnih mestih, ki uporabljajo Cloudflarejevo infrastrukturo. Cloudflare ni samo klasičen spletni strežnik, temveč predvsem omrežje za dostavo vsebin, zaščito prometa, posredovanje zahtevkov in izboljšanje hitrosti nalaganja strani.

V praksi Cloudflare pogosto deluje kot posrednik med uporabnikom in izvornim spletnim strežnikom. Uporabnikova zahteva najprej pride do Cloudflarejevega omrežja, to pa lahko vsebino postreže iz predpomnilnika, zaščiti stran pred napadi ali zahtevo posreduje naprej izvornemu strežniku.

Cloudflare se zato pogosto uporablja za pospeševanje nalaganja strani, zmanjševanje obremenitve izvornega strežnika, zaščito pred napadi DDoS, upravljanje DNS zapisov in varno dostavo vsebin prek HTTPS.

LiteSpeed

LiteSpeed Web Server je zmogljiv spletni strežnik, ki je znan po hitrosti, učinkovitem predpomnjenju in dobri podpori za dinamična spletišča. Pogosto ga srečamo pri gostovanju spletnih strani, kjer je pomembna hitra strežba vsebin in zmanjšanje obremenitve strežnika.

LiteSpeed je posebej priljubljen pri sistemih za upravljanje vsebin, kot je WordPress, saj omogoča uporabo naprednega predpomnjenja. V praksi lahko to pomeni hitrejše nalaganje strani in manjšo porabo strežniških virov.

Pri učenju spletnih tehnologij je LiteSpeed pomemben predvsem kot primer sodobnega spletnega strežnika, ki združuje klasično strežbo strani, podporo za HTTPS, predpomnjenje in optimizacijo delovanja.

Node.js

Node.js ni klasičen spletni strežnik v enakem smislu kot Apache, Nginx ali IIS. Je izvajalno okolje za JavaScript na strežniku, s katerim lahko razvijalci izdelajo spletni strežnik ali strežniško spletno aplikacijo.

Z Node.js lahko napišemo program, ki sprejema HTTP zahteve in vrača odgovore. Pogosto se uporablja za spletne aplikacije, programske vmesnike, aplikacije v realnem času, klepetalnice, nadzorne plošče in druge interaktivne storitve.

V praksi se Node.js pogosto uporablja skupaj z Nginxom ali drugim reverznim proxyjem. Nginx lahko sprejme zunanjo zahtevo, poskrbi za HTTPS in jo nato posreduje aplikaciji, ki teče v okolju Node.js.

Pozor: Node.js ni isto kot spletni strežnik Apache ali Nginx. Node.js je okolje, v katerem lahko izdelamo strežniško aplikacijo. Ta aplikacija lahko nato deluje kot spletni strežnik ali kot del širše strežniške postavitve.

Primerjava spletnih strežnikov in sorodnih rešitev

Rešitev Značilnosti Pogosta uporaba
Apache odprtokoden, modularen, zelo razširjen klasična spletišča, PHP, lokalna razvojna okolja
Nginx hiter, učinkovit, primeren za veliko povezav statične vsebine, reverzni proxy, večji promet
IIS Microsoftov strežnik, povezan z okoljem Windows ASP.NET, Windows Server, Microsoftova okolja
Cloudflare Server del Cloudflarejeve infrastrukture za posredovanje, predpomnjenje in zaščito prometa CDN, zaščita pred napadi, hitrejša dostava vsebin, razbremenitev izvornega strežnika
LiteSpeed zmogljiv spletni strežnik z učinkovitim predpomnjenjem hitro gostovanje spletišč, WordPress, optimizacija hitrosti
Node.js izvajalno okolje za JavaScript na strežniku spletne aplikacije, programski vmesniki, aplikacije v realnem času

Priporočila

  • Za javno spletišče praviloma uporabi HTTPS.
  • Strežnik redno posodabljaj, saj so posodobitve pomembne za varnost.
  • Za razvoj lahko uporabiš lokalno okolje, na primer XAMPP, za javno objavo pa ustrezno strežniško gostovanje.
  • Pri večjem prometu premisli o predpomnjenju, CDN omrežju ali reverznem proxyju.
  • Za klasična PHP spletišča sta pogosti izbiri Apache ali LiteSpeed.
  • Za posredovanje prometa aplikacijam se pogosto uporablja Nginx.
  • Za aplikacije, napisane v JavaScriptu na strežniku, je pogosta izbira Node.js.
  • Za dinamične aplikacije loči naloge spletnega strežnika, aplikacije in podatkovne baze.

Pozor: Lokalni spletni strežnik, nameščen za učenje in razvoj, ni nujno ustrezno zaščiten za javno objavo na internetu. Za javno dostopne storitve je treba posebej urediti varnost, posodobitve, pravice dostopa in varne nastavitve.