Načrtovanje in razvoj spletnih aplikacij

Spletni strežniki

Spletni strežnik (angl. Web Server) je računalniški sistem, ki obdeluje zahteve preko protokola HTTP. Izraz spletni strežnik se lahko nanaša na celoten sistem ali posebej na programsko opremo, ki sprejema in nadzira zahteve HTTP. Primarna funkcija spletnega strežnika je shranjevanje, obdelava in pošiljanje spletnih strani odjemalcem. Predložene strani so najpogosteje dokumenti HTML, ki poleg besedilne vsebine vključujejo tudi slike, CSS prdloge in skripte.

Spletni brskalnik sproži komunikacijo tako, da pošlje HTTP zahtevo za določen vir in strežnik se odzove z vsebino tega vira ali pa sporočilom o napaki (napaka 404). Vir je ponavadi resnična datoteka na sekundarnem pomnilniku strežnika, vendar to ni nujno in je odvisno od tega, kako se spletni strežnik izvaja.

Mnogi generični spletni strežniki podpirajo tudi strežniške skripte z uporabo Active Server Pages (ASP), PHP ali drugih skriptnih jezikov.

Uporaba spletnih strežnikov

Spletne strani v internetu streže množica različnih spletnih strežnikov. A med vsemi jih je le nekaj, ki so množično uporabljeni:

  • Apache
  • Nginx
  • Microsoft IIS
  • LiteSpeed
  • Google Servers (GWS)
Odstotek uporabe spletnih strežnikov

Odstotek uporabe spletnih strežnikov, vir https://w3techs.com, julij 2017

Spletne strani Wikipedije prikazujejo pregled in lastnosti programske opreme spletnih strežnikov.

Spletni strežnik Apache

Spletni strežnik Apache je spletni strežnik, ki igra ključno vlogo pri širjenju spleta. Od aprila 1996 je Apache najbolj popularen HTTP strežnik na celem spletu. Od oktobra 2007 pa je bilo na Apachijevem strežniku postavljenih približno 48% vseh spletnih strani. Uporablja ga 73,01% (vir www.dooli.si) vseh registriranih slovenskih domen.

Apache je naredila in vzdrževala skupnost razvijalcev, ki niso delovali pod nobeno veliko družbo oziroma podjetjem. Kasneje so se povezali v skupnost Apache Software Foundation. Aplikacija je bila prvotno zgrajena za operacijska sistema Unix in FreeBSD. Dandanes pa je na voljo tudi za širše uporabljene operacijske sisteme, kot so MS Windows, Solaris, Mac OS X idr.

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 odprto kodni reverzni proxy za HTTP, HTTPS, SMTP, POP3 in IMAP protokole. Uporablja se kot spletni strežnik, kot strežnik za porazdelitev obremenitve (ang. load balancer) in kot HTTP predpomnilnik. Servira lahko statično in tudi dinamično vsebino. Nginx je alternativa popularnemu spletnemu strežniku Apache. Po podatkih W3Techs-a julija 2017 je Nginx zadolžen za serviranje 34,1% vseh spletnih strani. Uporablja ga 10,3% (vir www.dooli.si) vseh registriranih slovenskih domen. Strežnik je znan po svoji hitrosti, nizki porabi sistemskih sredstev ter zmožnostjo dela z veliko hkratnimi povezavami.

Izdan je pod Free BSD licenco ter deluje na platformah in operacijskih sistemih, kot so FreeBSD, Linux, Solaris, AIX, HP-UX, Mac OS X ter Windows.

Nginx je razvil Igor Sysoev, njegov razvoj se je začel leta 2002. Razvit je bil za potrebe ruskih spletnih strani z veliko prometa, kot so Yandex, Mail.Ru, VK, in Ramble. Leta 2011 je bilo v San Franciscu v Californiji ustanovljeno podjetje Nginx Inc.. Tehnično podporo ponuja od februarja 2012.

Nginx poganja spletne strani, kot so Netflix, Hulu, Pinterest, CloudFlare, Airbnb, WordPress.com, GitHub, SoundCloud, Zynga...

Lastnosti Nginx-a

  • dogodkovna arhitektura
  • en glavni in več delovnih procesov
  • možnost spreminjanja nastavitev brez prekinitve
  • mail proxy s podporo SMTP, POP3 in IMAP protokolom
  • reverzni proxy z možnostjo predpomnjenja (cache), balansiranja (load balancing) in redundance
  • SSL in TLS podpora
  • virtualni stežniki z DNS in IP podporo
  • URL rewrite modul (spreminjanje URI naslova s pomočjo regularnih izrazov)
  • vgrajen HTTP gzip modul, ki stisne odgovor in s tem zmanjša porabo pasovne širine
  • vgrajen limit req modul, ki omeji število zahtevkov (primerno za preprečitev napadov s surovo silo)
  • FLV in MP4 streaming
  • 10000 neaktivnih HTTP keep-alive povezav zavzame približno 2,5MB pomnilnika

IIS - Internet Information Services

IIS (angl. Internet Information Services) je razširljiv spletni strežnik, ki ga je Microsoft ustvaril za uporabo s družino Windows NT. IIS podpira HTTP, HTTPS, FTP, FTPS, SMTP in NNTP. Od verzije Windows NT 4.0 je sestavni del operacijskih sistemov Windows a ni privzeto aktiven, potrebna je dodatna namestitev in konfiguracija.

Zgodovina IIS

  • IIS 1.0 - je bil izdan kot dodatek internetnih procesov za operacijski sistem Windows NT 3.51
  • IIS 2.0 - je bil vključen v Windows NT 4.0
  • IIS 3.0 - je bil vključen v Service Pack 2 v Wndows NT 4.0, z njim pa so vpeljali dinamično skriptno okolje Active Server Pages (ASP)
  • IIS 4.0 - je bil izdan kot dodaten paket ločen od Windows NT 4.0, z njim so opustili podporo za protokol Gopher
  • IIS 5.0 - je bil izdan z Windows 2000, z njim so bile uvedene dodatne metode preverjanja pristnosti, imel je podporo za protokol WebDAV in izboljšave v ASP.
  • IIS 5.1 - je bil izdan z Windows XP Professional in je okrnjena verzija IIS 5.0, saj omejuje število povezav in podpira eno samo spletno stran
  • IIS 6.0 - je bil vključen v izdaje Windows Server 2003 in Windows XP Professional x64, dodana je bila podpora za IPv6, povečana je bila tudi varnost in zanesljivost
  • IIS 7.0 - je bil vključen v Windows Vista in v Windows Server 2008, ima modularno arhitekturo, kar pomeni da se izvajajo samo procesi, ki jih zahtevamo, ima tudi možnost razširjanja funkcionalnosti z uporabo dodatnih modulov
  • IIS 7.5 - je bil vključen v Windows 7 in Windows Server 2008 R2, izboljšal je module WebDAV in FTP ter omogočil vodenje ukazne vrstice v programu PowerShell, uvedena je bila tudi podpora za TLS 1.1 in TLS 1.2
  • IIS 8.0 - je na voljo le v operacijskih sistemih Windows Server 2012 in Windows 8, vključuje SNI (povezava SSL na imena gostiteljev namesto IP-naslove), aplikacijsko inicializacijo, centralizirano podporo za potrdila SSL in večjezično skaliranje na strojni opremi NUMA
  • IIS 8.5 - je vključen v sisteme Windows Server 2012 R2 in Windows 8.1, ta različica vključuje Idle worker-Process page-out, Dynamic Site Activation, Enhanced Logging, ETW logging in Automatic Certificate Rebind
  • IIS 10 - je vključen v sisteme Windows Server 2016 in Windows 10, ta različica vključuje podporo za HTTP/2

Vse verzije IIS-a do verzije 7.0 ki so tekle na odjemalčevem operacijskem sistemu, so podpirale le 10 hkratnih povezav na spletno mesto.

Upravljalna konzola Internet Information Services (IIS) 10.0

Zaslonski posnetek upravljalne konzole Internet Information Services (IIS) 10.0

IIS Express

Je lahka različica IIS-a in je na voljo kot samostojni brezplačen strežnik. Nameščen je lahko v operacijskem sistemu Windows XP s servisnim paketom 3 in naslednjimi različicami operacijskega sistema Microsoft Windows. IIS 7.5 Express podpira le protokole HTTP in HTTPS. IIS Express je prenosen (angl. Potable), shrani svojo konfiguracijo za uporabnika, ne zahteva administrativnih pravic in se poskuša izogniti konfliktom z obstoječim spletnim strežnikom na istem računalniku.

IIS Express lahko prenesemo kot:

  • samostojen paket
  • del WebMatrix-a
  • del Visual Studia 2012 ali kasnejših različic

IIS Express privzeto uporablja samo lokalni promet.