Maksājuma metodes Abuse

Ko nozīmē 413 kļūda un kā to novērst

07.07.2024, 23:21

Retos gadījumos, bet gadās, ka, augšupielādējot vietnē lielus failus, Nginx tīmekļa serveris atgriež kļūdu - 413 Pieprasījuma vienība ir pārāk liela. Šī kļūda rodas, kad mēģināt augšupielādēt failu, kas ir pārāk liels, nekā serveris atļauj. Tālāk mēs aplūkosim 413 Request Entity Too Large kļūdas aprakstu un tās novēršanas metodes Nginx tīmekļa servera pusē.

Ko nozīmē 413 kļūda

Kļūda 413 jeb Request Entity Too Large nozīmē "Request Entity Too Large" jeb, vienkāršāk sakot, pārsūtāmo datu apjoms ir pārāk liels. Šī kļūda tiek atgriezta, ja serveris nevar apstrādāt pieprasījumu, jo pieprasījuma ķermenis (vai liels fails) ir pārāk liels. Kļūdas ekrānšāviņš ir parādīts tālāk:

Pēc noklusējuma Nginx ir noteikts, ka pieprasījuma ķermeņa lieluma ierobežojums ir 1 MB. Ja pieprasījums pārsniedz iestatīto vērtību, tiek parādīta kļūda 413 Pieprasījuma struktūra ir pārāk liela.

Kāpēc tiek parādīta kļūda

Kļūda 413 "Request Entity Too Large" (Pieprasījuma vienība ir pārāk liela) rodas, kad tīmekļa serveris noraida pieprasījumu, jo pieprasījuma ķermeņa izmērs pārsniedz serverī iestatīto maksimālo atļauto izmēru. Tas nozīmē, ka pieprasījumā nosūtītie dati (piemēram, augšupielādējot failu uz serveri) ir pārāk lieli, lai tos apstrādātu.

Problēmas atrisināšana:

  1. Mainot servera iestatījumus: varat mēģināt palielināt serverī iestatīto maksimālo pieļaujamo pieprasījuma lielumu. Tas var prasīt mainīt tīmekļa servera konfigurācijas failus - Apache, Nginx.
  2. Samazinot datu lielumu: ja iespējams, mēģiniet samazināt pieprasījumā nosūtīto datu lielumu. Piemēram, ja augšupielādējat failu, mēģiniet samazināt tā izmēru.
  3. Izmantojot citas datu pārsūtīšanas metodes: viena liela pieprasījuma vietā varat sadalīt datus vairākos mazākos pieprasījumos un sūtīt tos pa daļām.
  4. Citu failu pārsūtīšanas metožu izmantošana: lai pārsūtītu lielus failus, varat izmantot specializētus failu koplietošanas pakalpojumus vai FTP.

Ja jūs nekontrolējat serveri, uz kuru sūtāt pieprasījumu, sazinieties ar servera administratoru vai tehnisko atbalstu, lai saņemtu palīdzību 413 "Pieprasījuma vienība ir pārāk liela" kļūdas novēršanā.

Kā novērst

Lai novērstu 413 kļūdu, ir jāpalielina pieļaujamais limits. Jūs varat palielināt pieprasījuma korpusa lielumu un līdz ar to arī augšupielādējamo failu lielumu, izmantojot client_max_body_size. Šo opciju var izmantot konfigurācijas faila /etc/nginx/nginx.conf konfigurācijas faila /etc/nginx.conf vai vietnes konfigurācijas faila direktīvās http, server vai location.

Atveriet nginx.conf konfigurācijas failu, izmantojot jebkuru teksta redaktoru:

$ sudo nano /etc/nginx/nginx.conf

Ierakstiet rindu sadaļā http:

$ client_max_body_size 100M

100 - maksimālais faila izmērs megabaitos, ko var augšupielādēt tīmekļa vietnē, šajā gadījumā 100 megabaiti. Ja jūsu rīcībā ir vairākas vietnes un ir nepieciešams ierobežot augšupielādi visās vietnēs vienlaicīgi, tad http bloka sadaļā jāievada rindiņa client_max_body_size.

Ja nepieciešams ierobežot lejupielādi tikai konkrētai vietnei, tad klienta_max_body_size rinda jāievada vietnes konfigurācijas faila servera blokā, kas pēc noklusējuma atrodas /etc/nginx/sites-available/file_name_with_configuration:

Ja lejupielādes ierobežojumu nepieciešams iestatīt tikai konkrētai vietnes sadaļai, vietnes konfigurācijas faila atrašanās vietas direktīvai, kas pēc noklusējuma atrodas /etc/nginx/sites-available/file_name_with_configuration, jāpievieno klienta_max_body_size rinda:

Pēc izmaiņu veikšanas konfigurācijas failos saglabājiet tos, aizveriet teksta redaktoru un pārbaudiet konfigurācijas failu sintaksi, vai tajā nav kļūdu, izmantojot komandu:

$ sudo nginx -t

Var parādīties šādas rindas:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Tas nozīmē, ka kļūdu nav. Pretējā gadījumā redzēsiet kļūdas aprakstu, tā faila nosaukumu, kurā atrasta kļūda, un rindas numuru. Pēc jebkādu izmaiņu veikšanas Nginx konfigurācijas failos tos restartējiet, izmantojot komandu:

$ sudo systemctl reload nginx

Šajā rakstā aplūkota Nginx kļūda, kas pazīstama kā 413 Request Entity Too Large (Pārāk liela pieprasījuma vienība), kas rodas, augšupielādējot tīmekļa vietnē lielus failus. Papildus pašas kļūdas aprakstam tika aprakstīti arī soļi kļūdas novēršanai, rediģējot Nginx konfigurācijas failus.