413 Zbyt duża jednostka żądania - problem z przesyłaniem pliku

100

Próbuję wgrać plik 30MB na mój serwer i nie działa.

  1. Gdy przesyłam plik 30 MB, strona ładuje się „ Nie znaleziono strony

  2. Gdy przesyłam plik o rozmiarze 3 MB, otrzymuję komunikat „ 413 Request Entity Too Large ” z nginx / 0.6.32

Próbuję znaleźć nginx, aby zwiększyć " client_max_body_size ", ale nie mogę znaleźć nginx zainstalowanego na moim serwerze. Próbowałem nawet biegać:

vi /etc/nginx/nginx.conf

lub

vi /usr/local/nginx/conf/nginx.conf

aby sprawdzić, czy plik konfiguracyjny istnieje, ale nie mogłem go znaleźć na moim serwerze.

Czy jest sposób, aby rozwiązać ten problem? Czy muszę zainstalować nginx na moim serwerze.

EDYTOWAĆ:

Dokonałem wszystkich niezbędnych zmian w moich plikach php.ini,

post_max_size 128M
upload_max_filesize 100M
memory_limit 256M

Dzięki, Raju

Raju Vishwas
źródło
Cześć Mohammad, szukałem nginx, ale nie mogłem go znaleźć na moim serwerze. Jestem pewien, że nginx nie jest zainstalowany na moim serwerze, więc nie wiem, dlaczego otrzymuję komunikat o błędzie, który należy do Nginx
Raju Vishwas
najpierw musisz być pewien, że ngix nie jest zainstalowany na twoim serwerze, ale jeśli jesteś całkowicie pewien, może to ze względów bezpieczeństwa niektórzy menedżerowie serwerów dla zdezorientowanych hakerów używają tej sztuczki
Ashouri
czy próbowałeś ps aux | grep nginxsprawdzić, czy działa?
rpkamp
Czy próbowałeś which nginx? To da ci lokalizację pliku wykonywalnego, a nie pliku konfiguracyjnego, ale powinno przynajmniej potwierdzić, czy nginx jest zainstalowany, czy nie.
Doug McLean

Odpowiedzi:

129

Źródło: http://www.cyberciti.biz/faq/linux-unix-bsd-nginx-413-request-entity-too-large/

Edytuj plik konfiguracyjny nginx:

nano /etc/nginx/nginx.conf

Dodaj linię w sekcji http:

http {
    client_max_body_size 100M;
}

Nie używaj MB, nie zadziała, tylko M!

Nie zapomnij także zrestartować nginx

systemctl restart nginx
Dieter
źródło
Kiedy to robię, mój 413 zamienia się w 404. Używam Amazon Linux na EC2. Również dokument Nginx wyświetla małe litery „m”. nginx.org/en/docs/http/ ...
nu everest
Pyta o hasło, aby zmienić plik. Ale nie pamiętam, żebym je ustawił Czy coś mi brakuje?
Sooraj
1
Ścieżka do nano powinna mieć postać nano /etc/nginx/nginx.conf.
MaXi32
Pracowało dla mnie, ale UWAGA: Jeśli twoja konfiguracja ma już http { }sekcję, dodaj resztę w niej! Dodanie nowej http {}sekcji zakończy się niepowodzeniem i spowoduje "http" directive is duplicatebłąd w dzienniku Nginx.
jerclarke
43

-in php.ini (wewnątrz /etc/php.ini)

 max_input_time = 24000
 max_execution_time = 24000
 upload_max_filesize = 12000M
 post_max_size = 24000M
 memory_limit = 12000M

-in nginx.conf (wewnątrz / opt / nginx / conf)

client_max_body_size 24000M

Działa w moim przypadku

Bieg
źródło
Cześć Arun, problem z naszym serwerem polega na tym, że nie mogę znaleźć zainstalowanego nginx, ale nadal wyświetla błąd nginx
Raju Vishwas
znajdź nginx w / opt lub / etc. Wewnątrz nginx znajdź folder conf, a następnie nginx.conf.
Arun
Jeśli powyższy pomysł nie działa, wyszukaj nginx.conf w całym Linuksie za pomocą dowolnego narzędzia wyszukiwania.
Arun
`max_input_time = 24000`, 24000 to milisekundy?
Rishabh Agrahari
1
@RishabhAgrahari Seconds! Ustawia maksymalny czas w sekundach. Domyślnym ustawieniem jest -1, co oznacza, że ​​zamiast tego używany jest max_execution_time. Ustaw na 0, aby zezwolić na nieograniczony czas
Sean
18

Najpierw edytuj plik konfiguracyjny Nginx ( nginx.conf)

Lokalizacja: sudo nano /etc/nginx/nginx.conf

Dodaj następujące kody:

http {
        client_max_body_size 100M;
}

Następnie dodaj następujące wiersze w pliku konfiguracyjnym PHP ( php.ini)

Lokalizacja: sudo gedit /etc/php5/fpm/php.ini

Dodaj następujące kody:

memory_limit = 128M 
post_max_size = 20M  
upload_max_filesize = 10M
Sanaulla
źródło
1
Otworzyłem nginx.confplik zgodnie z instrukcją, ale był pusty! Nie spodziewałem się tego, ale kiedy dodałem twój kod, nadal działał ... tak, jak pewnie można by się spodziewać, ale z jakiegoś powodu nie byłem i byłem bardzo szczęśliwy, kiedy to zrobił!
Andrew Fox
9

Dodaję zmiany bezpośrednio do mojego virtualhost zamiast globalnej konfiguracji nginx, na przykład:

   server {
     client_max_body_size 100M;
     ...
   }

A potem zmieniam parametry w php.ini, jak w komentarzach powyżej:

   max_input_time = 24000
   max_execution_time = 24000
   upload_max_filesize = 12000M
   post_max_size = 24000M
   memory_limit = 12000M

a czego nie możesz zapomnieć to ponowne uruchomienie nginx i php-fpm, w centos 7 wygląda to tak:

  systemctl restart nginx
  systemctl restart php-fpm
Evan
źródło
8

Wprowadź plik domeny nginx:

nano /etc/nginx/sites-available/domain.set

Dodaj do pliku ten kod

client_max_body_size 24000M;

Jeśli pojawi się błąd, użyj tego polecenia

nginx -t
Cagdas
źródło
6
sudo nano /etc/nginx/nginx.conf

Następnie dodaj linię w sekcji http

http {
    client_max_body_size 100M;
}

nie używaj MB tylko M.

systemctl restart nginx

następnie do lokalizacji php

sudo gedit /etc/php5/fpm/php.ini

na dziś maksymalne użycie php 7.0 lub nowszego

sudo nano /etc/php/7.2/fpm/php.ini     //7.3,7.2 or 7.1 which php you use

sprawdź te rosnące przez twoje pragnienie.

memory_limit = 128M 
post_max_size = 20M  
upload_max_filesize = 10M

zrestartuj php-fpm

service php-fpm restart 
umar_sharif
źródło
4

Zakładając, że dokonałeś niezbędnych zmian w plikach php.ini:

Możesz rozwiązać ten problem, dodając następujący wiersz w pliku nginx.conf znajdującym się w następującej ścieżce:

/etc/nginx/nginx.conf

następnie edytuj plik za pomocą edytora tekstu vim w następujący sposób:

vi /etc/nginx/nginx.conf

i dodaj client_max_body_size z wystarczająco dużą wartością, na przykład:

client_max_body_size 20MB;

Następnie pamiętaj, aby zapisać za pomocą :xilub:wq

A następnie uruchom ponownie nginx.

Otóż ​​to.

Pracował dla mnie, mam nadzieję, że to pomoże.

Samson „Melah” Nyabanga
źródło
2

Przesyłanie działa z powyższymi zmianami. Ale kiedy wprowadziłem zmiany, zacząłem otrzymywać odpowiedź 404 podczas przesyłania pliku, co doprowadziło mnie do dalszego debugowania i odkryłem, że jest to problem z uprawnieniami, sprawdzając błąd nginx.log

Rozwiązanie:

Sprawdź aktualną własność użytkownika i grupy w / var / lib / nginx.

$ ls -ld /var/lib/nginx

drwx ------. 3 nginx nginx 17 października 5 19:31 / var / lib / nginx

Oznacza to, że prawdopodobnie nieistniejący użytkownik i grupa o nazwie nginx jest właścicielem tego folderu. To uniemożliwia przesyłanie plików.

W moim przypadku nazwą użytkownika wymienioną w „/etc/nginx/nginx.conf” była

user vagrant; 

Zmień własność folderu na użytkownika zdefiniowanego w nginx.conf w tym przypadku vagrant.

$ sudo chown -Rf vagrant:vagrant /var/lib/nginx

Sprawdź, czy faktycznie się zmieniło.

$ ls -ld /var/lib/nginx
drwx------. 3 vagrant vagrant 17 Oct  5 19:31 /var/lib/nginx

Załaduj ponownie nginx i php-fpm dla bezpieczniejszego sade.

$ sudo service nginx reload
$ sudo service php-fpm reload

Błąd odmowy pozwolenia powinien teraz zniknąć. Sprawdź error.log (na podstawie lokalizacji pliku error_log w nginx.conf).

$ sudo nano /path/to/nginx/error.log
Nafas Sait
źródło
0

Otwórz plik /etc/nginx/nginx.conf Dodaj lub zmieńclient_max_body_size 0;

Tai Ho
źródło
0

Posługiwać się:

php -i

polecenie lub dodaj:

phpinfo();

aby uzyskać lokalizację pliku konfiguracyjnego.

Zaktualizuj te zmienne zgodnie z potrzebami i serwerem

max_input_time = 24000
max_execution_time = 24000
upload_max_filesize = 12000M
post_max_size = 24000M
memory_limit = 12000M

W systemie Linux musisz ponownie uruchomić usługę nginx / apache i phpfpm, aby wczytać nowe ustawienia ini. Na xampp ammpy możesz je zrestartować z panelu sterowania dostarczonego z takimi aplikacjami.

Saqib Ashraf
źródło