Retais atvejais, bet pasitaiko, kad įkeliant didelius failus į svetainę "Nginx" žiniatinklio serveris grąžina klaidą - 413 Request Entity Too Large. Klaida atsiranda, kai į serverį bandoma įkelti failą, kuris yra per didelis, nei leidžiama serveryje. Toliau nagrinėsime 413 Request Entity Too Large klaidos aprašymą ir jos taisymo būdus "Nginx" žiniatinklio serveryje.
413 klaida arba Request Entity Too Large reiškia "Request Entity Too Large" (per didelis prašymo objektas) arba, paprasčiau tariant, perduodamų duomenų kiekis yra per didelis. Klaida grąžinama, kai serveris negali apdoroti užklausos, nes užklausos korpusas (arba didelis failas) yra per didelis. Toliau pateikiama klaidos ekrano nuotrauka:
Pagal numatytuosius nustatymus "Nginx" užklausos kūno dydžio riba yra 1 MB. Jei užklausa viršija nustatytą vertę, bus rodoma klaida 413 Request Entity Too Large (Per didelis užklausos kūnas).
Klaida 413 "Request Entity Too Large" ("Per didelis užklausos objektas") atsiranda, kai žiniatinklio serveris atmeta užklausą, nes užklausos kūno dydis viršija serveryje nustatytą didžiausią leistiną dydį. Tai reiškia, kad užklausoje siunčiami duomenys (pavyzdžiui, įkeliant failą į serverį) yra per dideli, kad juos būtų galima apdoroti.
Išspręskite problemą:
Jei nekontroliuojate serverio, į kurį siunčiate užklausą, kreipkitės į serverio administratorių arba techninės pagalbos tarnybą, kad padėtų išspręsti 413 "Request Entity Too Large" (Užklausos objektas per didelis) klaidą.
Norėdami ištaisyti 413 klaidą, turėtumėte padidinti leistiną ribą. Naudodami client_max_body_size
galite padidinti užklausos kūno dydį, taigi ir siunčiamų failų dydį. Šią parinktį galima naudoti konfigūracijos failo /etc/nginx/nginx.conf
arba svetainės konfigūracijos failo http, serverio arba vietos direktyvose.
Atidarykite nginx.conf
konfigūracijos failą naudodami bet kurį teksto redaktorių:
$ sudo nano /etc/nginx/nginx.conf
Įveskite eilutę http skirsnyje:
$ client_max_body_size 100M
100 - didžiausias failo dydis megabaitais, kurį galima įkelti į svetainę, šiuo atveju 100 megabaitų. Jei jūsų žinioje yra kelios svetainės ir reikia apriboti įkėlimą į visas svetaines vienu metu, tuomet http bloko skirsnyje reikia įvesti eilutę client_max_body_size
.
Jei atsisiuntimą reikia apriboti tik konkrečiai svetainei, tuomet client_max_body_size
eilutę reikia įrašyti į svetainės konfigūracijos failo serverio bloką, kuris pagal numatytuosius nustatymus yra /etc/nginx/sites-available/file_name_with_configuration
:
Kai atsisiuntimo ribą reikia nustatyti tik konkrečiam svetainės skyriui, eilutę client_max_body_size
reikia įtraukti į svetainės konfigūracijos failo, kuris pagal numatytuosius nustatymus yra /etc/nginx/sites-available/file_name_with_configuration
, vietos
direktyvą:
Atlikę konfigūracijos failų pakeitimus, išsaugokite juos, uždarykite teksto redaktorių ir patikrinkite, ar konfigūracijos failų sintaksė nėra klaidinga, naudodami komandą:
$ sudo nginx -t
Galite pamatyti šias eilutes:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Tai reiškia, kad klaidų nėra. Priešingu atveju matysite klaidos aprašymą, failo, kuriame rasta klaida, pavadinimą ir eilutės numerį. Atlikę bet kokius "Nginx" konfigūracijos failų pakeitimus, turėtumėte juos paleisti iš naujo naudodami komandą:
$ sudo systemctl reload nginx
Šiame straipsnyje aptarta "Nginx" klaida, žinoma kaip 413 Request Entity Too Large (Per didelis užklausos objektas), kuri atsiranda įkeliant didelius failus į svetainę. Aprašyta ne tik pati klaida, bet ir jos taisymo veiksmai redaguojant "Nginx" konfigūracijos failus.