Svaki web poslužitelj koji primi HTTP zahtjev dobiva odgovor u obliku HTTP statusnog koda. Ovi kodovi su kratke bilješke s poslužitelja koje opisuju situaciju. Oni ne sadrže stvarni sadržaj stranice. Umjesto toga, to je izvješće o tome kako su stvari prošle nakon primanja HTTP zahtjeva. U mnogim situacijama ovi su kodovi važni za dijagnosticiranje raznih problema s poslužiteljem/klijentom.
Ovi kodovi su troznamenkasti cijeli brojevi, od kojih svaki označava različite statuse. Na temelju prve znamenke, HTTP kodovi podijeljeni su u pet kategorija:
-
Informativni odgovori: Vrijednost se kreće od 100 do 199. Opisuje da je zahtjev primljen i da se obrađuje.
-
Uspješni odgovori: Vrijednost se kreće od 200 do 299. Označava da je radnja primljena, shvaćena i uspješno prihvaćena.
-
Poruke preusmjeravanja: Vrijednost se kreće od 300 do 399. To znači da su potrebne daljnje radnje kako bi se zahtjev dovršio.
-
Odgovori o pogrešci klijenta: Vrijednost se kreće od 400 do 499. Ili zahtjev sadrži neispravnu sintaksu ili se ne može ispuniti.
-
Odgovori o pogrešci poslužitelja: Vrijednost se kreće od 500 do 599. To znači da poslužitelj nije uspio obraditi valjani zahtjev.
U ovom vodiču raspravljat ćemo o nekim od najčešćih HTTP kodova pogrešaka s kojima se svi susreću (4xx i 5xx), iz perspektive sistemskog administratora. Brojne situacije mogu dovesti do toga da web poslužitelj odgovori određenim kodom. Osim toga, ovaj će vodič raspravljati o potencijalnim uzrocima i rješenjima.
Klijentske naspram poslužiteljskih pogrešaka
Kodovi pogrešaka od 400 do 499 proizlaze iz korisničkog klijenta (web preglednika ili bilo kojeg HTTP klijenta). Iako su pogreške uglavnom povezane s klijentom, korisno je znati s kojim se kodom korisnik susreće. To može pomoći u utvrđivanju može li se potencijalni problem riješiti na strani poslužitelja.
S druge strane, pogreške poslužitelja (HTTP statusni kodovi od 500 do 599) nastaju kada je poslužitelj svjestan da je došlo do pogreške ili kada nije u mogućnosti obraditi zahtjev.
Opće rješavanje problema
Bez obzira na pogrešku, evo nekoliko općih savjeta za rješavanje problema koje biste trebali najprije isprobati kada se suočite s bilo kojim HTTP kodom pogreške:
-
Kada koristite web preglednik za testiranje poslužitelja, dobra je praksa osvježiti preglednik nakon bilo kakve promjene na poslužitelju.
-
Zapisnik poslužitelja sadrži detaljne informacije o tome kako poslužitelj obrađuje zahtjeve. Na primjer, popularni web poslužitelji poput Apachea i Nginxa stvaraju datoteke access.log i error.log. Provjera ovih zapisnika može otkriti korisne informacije.
-
HTTP kodovi pogrešaka dio su standarda. Programi implementiraju ovaj standard na temelju načina na koji obrađuju zahtjeve. To znači da se određeni statusni kod vraća ovisno o tome kako softver poslužitelja obrađuje određenu pogrešku.
Ovaj bi vodič trebao poslužiti kao korisna smjernica u otkrivanju izvora problema.
Uobičajene HTTP pogreške
-
Uobičajene pogreške klijenta

Kod pogreške 400 označava loš zahtjev (Bad Request). On opisuje da HTTP zahtjev poslan poslužitelju sadrži neispravnu sintaksu. Pogledajmo potencijalne izvore neispravne sintakse:
-
Kolačići povezani s web-mjestom možda su oštećeni. Brisanje kolačića i predmemorije preglednika može riješiti problem.
-
Web preglednik koji šalje zahtjev možda je neispravan ili sadrži pogreške.
-
To bi mogao biti loš zahtjev zbog pogreške pri ručnom oblikovanju HTTP zahtjeva, na primjer, neispravne upotrebe curl.

Kod pogreške 401 (Unauthorized) javlja se kada zahtjev pokušava pristupiti resursima koji nisu autentificirani ili nisu ispravno autentificirani. Kako bi riješio problem, korisnik mora pružiti potrebne vjerodajnice za pristup zaštićenom resursu.
Primjer situacije bio bi kada korisnik pokuša pristupiti resursu zaštićenom HTTP autentifikacijom. U takvoj situaciji korisnik će primiti kod pogreške 401 osim ako ne unese valjano korisničko ime i lozinku.

Kod pogreške 403 (Forbidden) odnosi se na situaciju kada je korisnički zahtjev valjan, ali poslužitelj odbija poslužiti zahtjev. To može biti zbog nedostatka dopuštenja za pristup traženom resursu. Postoji nekoliko scenarija koji mogu dovesti do ovog problema:
-
Dopuštenja datoteka: Ako poslužitelj nema dovoljno dopuštenja za pristup traženoj datoteci, to može rezultirati pogreškom 403. Moguća rješenja uključuju provjeru pokušava li poslužitelj pristupiti indeksnoj datoteci web-poslužitelja, radnom procesu u vlasništvu www-data korisnika, te nalazi li se indeksna datoteka na ispravnom mjestu (u slučaju Nginxa, to je /usr/share/nginx/html/index.html).
-
.htaccess: Web-poslužitelji koriste .htaccess datoteku za implementaciju različitih sigurnosnih značajki, na primjer, filtriranje određenih IP adresa ili raspona. Moguće rješenje uključuje provjeru da IP adresa s koje dolazi HTTP zahtjev nije blokirana.
-
Datoteka ne postoji: Ako zahtjev pokušava pristupiti lokaciji koja nema zadanu indeksnu datoteku, a popisi direktorija nisu omogućeni, poslužitelj će vratiti pogrešku 403. U takvoj situaciji moguće rješenje uključuje prilagodbu konfiguracije poslužitelja kako bi se omogućio prikaz popisa direktorija.

Kod pogreške 404 (Not Found) znači da se korisnik uspješno povezao s web-poslužiteljem, ali nije mogao pronaći traženi resurs. Ova se pogreška može pojaviti u nizu situacija. Evo nekoliko mogućih koraka za rješavanje problema:
-
Provjerite ima li potencijalnih tipfela u poveznici koja je usmjerila korisnika na resurs poslužitelja.
-
Korisnik je mogao pogrešno upisati URL. Provjerite je li to u pitanju i ispravite ako je potrebno.
-
Provjerite postoji li datoteka na poslužitelju. Je li premještena ili obrisana s poslužitelja?
-
Poslužitelj je možda konfiguriran s pogrešnom lokacijom korijenskog direktorija dokumenata (document root). Provjerite to i ispravite ako je potrebno.
-
Ima li radni proces web-poslužitelja u vlasništvu korisnika dopuštenje za prolazak kroz traženu datoteku? Imajte na umu da su za pristup direktoriju potrebna i dopuštenja za čitanje i za izvršavanje.
-
Je li resurs simbolička poveznica? U tom slučaju poslužitelj mora biti konfiguriran za praćenje simboličkih poveznica.
-
Uobičajene pogreške poslužitelja

Kod pogreške 500 (Internal Server Error) javlja se kada poslužitelj iz nepoznatih razloga ne može obraditi zahtjev. U nekim situacijama poslužitelj će prijaviti pogrešku 500 kada bi specifičniji 5xx kod pogreške bio prikladniji.
Jedan od najčešćih izvora pogreške 500 je pogrešno konfiguriran poslužitelj, na primjer, neispravna .htaccess datoteka. Također se može pojaviti ako nedostaju paketi, na primjer, pri pokušaju pokretanja PHP koda bez instaliranog PHP-a na sustavu.

Kod pogreške 502 (Bad Gateway) označava da je poslužitelj proxy ili pristupnik (gateway) i da ne može dobiti valjani odgovor od pozadinskog poslužitelja (koji je zapravo odgovoran za ispunjavanje zahtjeva). Ako je poslužitelj reverzni proxy, na primjer, usmjerivač opterećenja (load balancer), potrebno je provjeriti nekoliko različitih stvari:
-
Pozadinski poslužitelji rade ispravno.
-
Reverzni proxy je ispravno konfiguriran (s ispravnim specifikacijama pozadine).
-
Veza između reverznog proxyja i pozadinskog poslužitelja je ispravna. Ako poslužitelji mogu komunicirati koristeći različite portove, vatrozid mora dopustiti vezu s tim portovima.
-
Ako je web-aplikacija konfigurirana za korištenje socketa, provjerite postoji li socket na ispravnom mjestu s odgovarajućim dopuštenjima.

Kod pogreške 503 (Service Unavailable) opisuje da je poslužitelj preopterećen ili je trenutno u tijeku održavanje. To implicira da bi poslužitelj trebao postati dostupan u nekom trenutku.
Ako poslužitelj nije u postupku održavanja, to ukazuje na to da poslužitelj nema potrebne hardverske resurse (procesorsku snagu, memoriju itd.) za obradu dolaznih zahtjeva. U tom slučaju poslužitelj bi trebao biti konfiguriran tako da omogući više korisnika ili dodijeli više resursa.
Kod pogreške 504 (Gateway Timeout) govori da je poslužitelj proxy ili poslužitelj pristupnik (gateway) i da nije primio odgovor od pozadine unutar dopuštenog vremenskog okvira. Postoji nekoliko situacija koje mogu dovesti do ovog problema:
-
Loša mrežna veza između poslužitelja.
-
Pozadinski poslužitelj radi presporo (zbog problema s performansama).
-
Vremensko ograničenje (timeout) poslužitelja pristupnika/proxyja je preusko.
Završne misli
Ovaj vodič raspravlja o HTTP kodovima pogrešaka, posebno o nekima od najčešćih. Opisuje što kodovi znače i daje prijedloge za potencijalne radnje rješavanja problema. S tim znanjem sada imate čvrstu osnovu za rješavanje problema s vašim web poslužiteljima ili aplikacijama.
Ovo je samo kratki popis najpopularnijih HTTP statusnih kodova. Za sveobuhvatan popis svih HTTP statusnih kodova, pogledajte HTTP statusne kodove na Wikipediji. Također možete pogledati naš vodič o Nginx HTTP proxyiranje, raspodjela opterećenja, međuspremanje i predmemoriranje: pregled.
Sretno s radom!
Komentari
Još nema komentara. Budite prvi.