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:
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();
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:
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.
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.
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:
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:
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:
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:
Primer pokretanja:
Sigurnosne preporuke za servisiranje statičkih web stranica
- Koristite HTTPS: Implementacija HTTPS-a osigurava da su svi podaci šifrovani tokom prenosa između servera i klijenta. Ovo je ključno za zaštitu korisničkih podataka, čak i kod statičkih stranica.
- SSL/TLS sertifikati: Osigurajte da vaš server koristi SSL/TLS sertifikate kako bi garantovao siguran kanal komunikacije. Možete dobiti besplatne SSL sertifikate pomoću servisa kao što je Let’s Encrypt.
- HTTP stroga politika transportne sigurnosti (HSTS): Omogućava automatsko usmeravanje svih HTTP zahteva na HTTPS, čime se sprečava upotreba nesigurnih veza.
- Zaštita od napada: Omogućite zaštitu od DDoS napada koristeći firewall i load balancing tehnologije.
Kompresija i keširanje
- Kompresija: Web serveri poput Apache i Nginx mogu automatski kompresovati statičke fajlove korišćenjem kompresije kao što je Gzip ili Brotli. Ovo smanjuje veličinu fajlova (HTML, CSS, JS) i ubrzava učitavanje stranice.
- Apache: Omogućite Gzip kompresiju dodavanjem mod_deflate.
- Nginx: Koristite gzip on; u konfiguraciji.
- Keširanje: Definišite zaglavlja za keširanje resursa kako bi se smanjila potreba za ponovnim preuzimanjem. Koristite Cache-Control i Expires za dugotrajno 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"
- Kompresija (mod_deflate): Ovaj modul kompresuje odgovore (HTML, CSS, JS) koristeći Gzip, smanjujući veličinu podataka koji se prenose između servera i klijenta.
- Keširanje (mod_expires): Definiše koliko dugo pretraživač treba da kešira resurse (npr. slike), što poboljšava performanse smanjenjem zahteva prema serveru.
Nginx
gzip on;
gzip_types text/css application/javascript;
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 30d;
}
- gzip on: Aktivira Gzip kompresiju za određene tipove sadržaja (CSS, JavaScript).
- location blok: Postavlja pravila keširanja za statičke fajlove poput slika i CSS fajlova, omogućujući keširanje do 30 dana.
Praktični koraci za implementaciju HTTPS-a i SSL sertifikata:
- Nabavka SSL/TLS sertifikata: Sertifikati mogu biti kupljeni od ovlašćenih sertifikacionih autoriteta (CA) ili besplatno putem servisa kao što je Let's Encrypt.
- 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.
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.
Prethodno
ASP.NET Core web aplikacije >| |
Sledeće
Kreiranje sql web api servisa koji čita podatke iz baze >| |