W rzadkich przypadkach, ale zdarza się, że podczas przesyłania dużych plików na stronę internetową, serwer WWW Nginx zwraca błąd - 413 Request Entity Too Large. Błąd pojawia się, gdy próbujesz przesłać na serwer plik, który jest zbyt duży, niż jest to dozwolone na serwerze. W dalszej części rozważymy opis błędu 413 Request Entity Too Large i metody jego naprawy po stronie serwera WWW Nginx.
Błąd 413 lub Request Entity Too Large oznacza "Zbyt duża jednostka żądania" lub, mówiąc prościej, ilość przesyłanych danych jest zbyt duża. Błąd jest zwracany, gdy serwer nie może przetworzyć żądania, ponieważ treść żądania (lub duży plik) jest zbyt duża. Zrzut ekranu błędu pokazano poniżej:
Domyślnie Nginx ma limit rozmiaru treści żądania wynoszący 1 MB. Jeśli żądanie przekroczy ustawioną wartość, pojawi się błąd 413 Request Entity Too Large.
Błąd 413 "Request Entity Too Large" pojawia się, gdy serwer WWW odrzuca żądanie, ponieważ rozmiar treści żądania przekracza maksymalny dozwolony rozmiar ustawiony na serwerze. Oznacza to, że dane wysłane w żądaniu (na przykład podczas przesyłania pliku na serwer) są zbyt duże, aby je przetworzyć.
Rozwiązanie problemu:
Jeśli nie kontrolujesz serwera, do którego wysyłasz żądanie, skontaktuj się z administratorem serwera lub pomocą techniczną, aby uzyskać pomoc w rozwiązaniu błędu 413 "Request Entity Too Large".
Aby naprawić błąd 413, należy zwiększyć dopuszczalny limit. Możesz zwiększyć rozmiar treści żądania, a w konsekwencji rozmiar przesyłanych plików, używając opcji client_max_body_size
. Opcja jest dostępna do użycia w dyrektywach http, server lub location w pliku konfiguracyjnym /etc/nginx/nginx.conf
lub w pliku konfiguracyjnym witryny.
Otwórz plik konfiguracyjny nginx.
conf za pomocą dowolnego edytora tekstu:
$ sudo nano /etc/nginx/nginx.conf
W sekcji http wpisz linię:
$ client_max_body_size 100M
100 - maksymalny rozmiar pliku w megabajtach, który można przesłać na stronę internetową, w tym przypadku 100 megabajtów. Jeśli masz do dyspozycji kilka witryn i konieczne jest ograniczenie przesyłania do wszystkich witryn jednocześnie, wówczas linia client_max_body_size
powinna zostać wprowadzona do sekcji http block.
Jeśli konieczne jest ograniczenie pobierania tylko dla określonej witryny, linia client_max_body_size
powinna zostać dodana do bloku serwera pliku konfiguracyjnego witryny, który domyślnie znajduje się w /etc/nginx/sites-available/file_name_with_configuration
:
Gdy limit pobierania musi być ustawiony tylko dla określonej sekcji witryny, ciąg client_max_body_size
musi zostać dodany do dyrektywy lokalizacji
pliku konfiguracyjnego witryny, który domyślnie znajduje się w /etc/nginx/sites-available/file_name_with_configuration
:
Po wprowadzeniu zmian w plikach konfiguracyjnych należy je zapisać, zamknąć edytor tekstu i sprawdzić składnię plików konfiguracyjnych pod kątem błędów za pomocą polecenia :
$ sudo nginx -t
Możesz zobaczyć następujące wiersze:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Oznacza to, że nie ma żadnych błędów. W przeciwnym razie zobaczysz opis błędu, nazwę pliku, w którym znaleziono błąd i numer linii. Po wprowadzeniu jakichkolwiek zmian w plikach konfiguracyjnych Nginx, należy je ponownie uruchomić za pomocą polecenia:
$ sudo systemctl reload nginx
W tym artykule omówiono błąd w Nginx znany jako 413 Request Entity Too Large, który występuje podczas przesyłania dużych plików na stronę internetową. Oprócz opisu samego błędu, opisano również kroki mające na celu naprawienie błędu poprzez edycję plików konfiguracyjnych Nginx.