SERVISIRANJE STATIČKIH WEB STRANA POMOĆU WEB SERVERA

Statičke web stranice su ključne za jednostavne aplikacije i informativne sajtove. Ovaj tekst objašnjava kako web serveri, poput Apache i Nginx, mogu efikasno isporučivati statičke stranice. Pokrivene su sigurnosne preporuke, optimizacija performansi kroz kompresiju i keširanje, kao i primeri konfiguracije za popularne web servere.​Prethodna aplikacija se može proširiti za opsluživanje statičkih web strana. U prethodnom primeru, na zahtev unesen u polju za adrese u web pregledaču: 
http://localhost:5000
proces tj. web aplikacija je odgovorila na zahtev vraćajući pozdravnu poruku i sistemsko vreme. Aplikacija se može proširiti tako što joj se dodaju statičke web strane o okviru nekog novog foldera npr. wwwroot koji se nalazi u okviru root foldera aplikacije. Te strane zapravo html strane npr:
Kontakt.html, Index.html, Vesti.html, Studenti.html

Sada će zahtev tj. URL za poziv  web aplikaciji(Http web serveru) koji treba da vrati sadržaj ovih strana biti npr:
​
http://localhost:5000/Studenti.html
ili
http://localhost:5000/Kontakt.html
​Da bi web server vraćao ove stranice na zahtev klijenta potrebno je u Startup.cs fajlu u okviru Configure metode dodati sledeće dve linije koda:
​

app.UseDefaultFiles();
app.UseStaticFiles();
​Na ovaj način je web serveru rečeno da koristi podrazumevanu lokaciju za statičke fajlove, a to je wwwroot.UseStaticFile() naredba je potrebna da bi se koristili statički fajlovi: html, javascript, css itd.
Kako kreirati ovakvu web aplikaciju pomoću VS Code- alata pogledajte u sledećem videu:

Video 1: ASP NET Core: Servisiranje statičkih web strana

Razlika između statičkih stranica i dinamičkih web servisa:

Statičke web stranice sadrže unapred definisane HTML, CSS i JavaScript fajlove koji se ne menjaju prilikom svakog učitavanja. One su idealne za jednostavne informativne sajtove.
Dinamički web servisi, s druge strane, odgovaraju na zahteve generisanjem sadržaja u realnom vremenu, poput API poziva. Umesto fiksnih stranica, web servisi vraćaju podatke, koji mogu biti različiti u zavisnosti od ulaza, poput trenutnog vremena ili pretrage korisnika. ASP.NET Core omogućava lako kreiranje ovih dinamičkih servisa.

​Web servisi u asp.net core tehnologiji

U prethodnim primerima je opisano kako se kreira jednostavan web server koji vraća tekst ili html stranu na zahtev od strane web pregledača, ali je ponekad neophodno da se kreira web servis.
​
Web serevis je aplikacija koja na zahtev od strane pregledača šalje podatak ili skup podataka a ne html stranu.
Primer jednostavnog web servisa je servis koji vraća trenutno vreme sa servera.
Ako se u google pretraživaču ukuca neka ključna reč za pretragu npr „Tesla“, google-ov web servis će onda izvršiti najverovatnije neku funkciju kojoj se kao parametar prosleđuje reč „Tesla“ i koja promalazi niz sličnih reči, npr. tesla, teslić, teslin transformator itd i koji se vraća kao odgovor na zahtev web pregledaču.

Video 1: ASP NET Veb servisi


Kreiranje kostura aplikacije se vrši pomoću komande u command promptu:

dotnet new web
Web servis koji vraća sistemsko vreme na serveru je zapravo bio kreiran u nekom od prethodnih primera, dodavanjem naredbe MapGet() objekta klase koja implementira interfejs IEndpointRouteBuilder i koja mapira poziv url-a:
http://localhost:5000/time
​na web servis koji prikazuje sistemsko vreme, vidi sliku:Web servisi u asp.net core- Prikaz sistemskog vremena
Slika 1: Web servisi u asp.net core- Prikaz sistemskog vremena
Pomoću naredbi: endpoint.MapGet() mogu se dodati i drugi web servisi kao npr. servis koji za poziv ​http://localhost:5000/day
http://localhost:5000/day
​​vraća dan u nedelji, što se može videti na sledećoj slici: Web servisi u asp.net core- Prikaz dana u nedelji
Slika 2: Web servisi u asp.net core- Prikaz dana u nedelji
​Ako bi smo sada želeli da pozovemo web servis i pri tome mu prosledimo parametar npr. pozivom preko web pregledača koristeći sledeći URL:
http://localhost:5000/hello?name=Mihajlo
onda bi u implementaciji web servisa morali da izvučemo prethodno poslat parametar name=Mihajlo koji predstavlja ime koje treba pridodati pozdravnoj poruci. Na sledećoj slici je prikazan kod koji će to omogućiti:Web servisi u asp.net core- prikaz pozdrava sa imenom izvučenim iz Querry-ja kao parametrom
Slika 4: Web servisi u asp.net core- prikaz pozdrava sa imenom izvučenim iz Querry-ja kao parametrom
Da bi izvukli ime, kreiramo prvo promenljivu “name”, koju ćemo izvući iz context.Request objekta pomoću osobine(Property) Querry koja je zapravo skup parametara koji se definišu u URL adresi poziva posle „?“. Vrednost paramera „name“ izvlačimo iz skupa pristupom preko naziva parametra Querry[„name”].
Primer pokretanja:Web servisi u asp.net core- prikaz pozdrava sa imenom izvučenim iz Querry-ja kao parametrom- prikaz
Slika 5: Web servisi u asp.net core- prikaz pozdrava sa imenom izvučenim iz Querry-ja kao parametrom- prikaz

Sigurnosne preporuke za servisiranje statičkih web stranica

Kompresija i keširanje

Primeri podešavanja

Apache


AddOutputFilterByType DEFLATE text/html text/css application/javascript



ExpiresActive On
ExpiresByType text/html "access plus 1 hour"
ExpiresByType image/jpeg "access plus 1 month"

Nginx

gzip on;
gzip_types text/css application/javascript;
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 30d;
}

Praktični koraci za implementaciju HTTPS-a i SSL sertifikata:

  1. Nabavka SSL/TLS sertifikata: Sertifikati mogu biti kupljeni od ovlašćenih sertifikacionih autoriteta (CA) ili besplatno putem servisa kao što je Let's Encrypt.
  2. Podešavanje za Apache:
sudo a2enmod ssl
sudo a2ensite default-ssl
sudo service apache2 reload
Zatim, u Apache konfiguracionom fajlu (npr. /etc/apache2/sites-available/default-ssl.conf), postavite putanju do sertifikata:SSLCertificateFile /path/to/your_domain_name.crt
SSLCertificateKeyFile /path/to/your_private.key
3. Podešavanje za Nginx: U Nginx konfiguracionom fajlu:server {
listen 443 ssl;
server_name your_domain.com;
ssl_certificate /path/to/your_domain_name.crt;
ssl_certificate_key /path/to/your_private.key;
}
Ova konfiguracija aktivira SSL/TLS na serveru.
​
4. Preusmeravanje HTTP na HTTPS: U Nginx-u ili Apache-u, dodajte pravilo za preusmeravanje svih HTTP zahteva na HTTPS, osiguravajući sigurnu komunikaciju.
Nakon postavljanja, važno je redovno obnavljati SSL sertifikate i testirati HTTPS vezu koristeći alate kao što su SSL Labs za proveru sigurnosti.