nginx ciągle mówi client intended to send too large body
. Wskazały mnie Googling i RTM client_max_body_size
. Ustawiłem go 200m
na, nginx.conf
a także vhost conf
ponownie uruchomiłem Nginx kilka razy, ale wciąż pojawia się komunikat o błędzie.
Czy coś przeoczyłem? Backend jest php-fpm
( max_post_size
i max_upload_file_size
są odpowiednio ustawione).
client_max_body_size
whttp
sekcji ma oczekiwany efekt w wersjiOdpowiedzi:
Postępując zgodnie z dokumentacją nginx , możesz ustawić client_max_body_size 20m (lub dowolną potrzebną wartość) w następującym kontekście:
źródło
http
lublocation
ustawieniach. Działa, gdy jest ustawiony naserver
poziomie. nginx / 1.4.4W końcu duże pliki do przesyłania NGINX z powodzeniem działają na hostowanych stronach WordPress (zgodnie z sugestiami nembleton i rjha94)
Pomyślałem, że może to być pomocne dla kogoś, jeśli dodam trochę wyjaśnienia do ich sugestii. Na początek upewnij się, że umieściłeś dyrektywę zwiększonego przesyłania w WSZYSTKICH TRZY oddzielnych blokach definicji (serwer, lokalizacja i http). Każdy powinien mieć osobny wpis wiersza. Wynik polubi coś takiego (gdzie ... odzwierciedla inne linie w bloku definicji):
(w mojej konfiguracji ISPconfig 3 ten blok znajduje się w pliku /etc/nginx/nginx.conf)
(w mojej konfiguracji ISPconfig 3 te bloki znajdują się w pliku /etc/nginx/conf.d/default.conf)
Upewnij się także, że plik php.ini twojego serwera jest zgodny z tymi ustawieniami NGINX. W moim przypadku zmieniłem ustawienie w sekcji File_Uploads php.ini, aby czytać:
Uwaga: jeśli zarządzasz konfiguracją ISPconfig 3 (moja konfiguracja dotyczy CentOS 6.3, zgodnie z The Perfect Server ), będziesz musiał zarządzać tymi wpisami w kilku osobnych plikach. Jeśli twoja konfiguracja jest podobna do konfiguracji krok po kroku, pliki conf NGINX, które musisz zmodyfikować, znajdują się tutaj:
Mój plik php.ini znajdował się tutaj:
Nadal przeoczyłem blok http {} w pliku nginx.conf. Najwyraźniej przeoczenie tego skutkowało ograniczeniem przesyłania do domyślnego limitu 1M. Po dokonaniu powiązanych zmian będziesz również musiał ponownie uruchomić usługi NGINX i PHP FastCGI Process Manager (PHP-FPM). W powyższej konfiguracji używam następujących poleceń:
źródło
/etc/init.d/nginx reload
zamiast tego. Dodało to korzyści, takie jak „jeśli konfiguracja jest nieprawidłowa”, NginX nie przestanie działać.nginx -t
(testuje składnię pliku konfiguracyjnego), a następnienginx -s reload
(faktycznie przeładowuje).W marcu 2016 r. Napotkałem ten problem, próbując POST json przez https (z żądań Pythona, ale to nie ma znaczenia).
Sztuką
http {}
server {}
jest umieszczenie „client_max_body_size 200M;” w co najmniej dwóch miejscach i :1.
http
katalogu/etc/nginx/nginx.conf
2.
server
katalog w vhost./etc/nginx/sites-available/mysite.com
znaczy, dla tych, którzy nie mają vhostów, prawdopodobnie jest to twój nginx.conf lub w tym samym katalogu, co on.3.
location /
katalog w tym samym miejscu co 2./
, ale jeśli w ogóle nie działa, zaleciłbym zastosowanie tego do,/
a następnie, gdy jego działanie będzie bardziej szczegółowe.Pamiętaj - jeśli masz SSL, będziesz musiał ustawić powyższe dla SSL,
server
alocation
także, gdziekolwiek to może być (najlepiej tak samo jak 2. ). Odkryłem, że jeśli twój klient spróbuje przesłać na http i oczekujesz, że dostanie 301 do https, nginx faktycznie porzuci połączenie przed przekierowaniem z powodu zbyt dużego pliku dla serwera http, więc musi to być w obu .Ostatnie komentarze sugerują, że jest problem z SSL w nowszych wersjach nginx, ale mam 1.4.6 i wszystko jest dobrze :)
źródło
client_max_body_size
to uhonorowane w sekcjihttp
bez potrzeby dodawania go gdzie indziej.Musisz zastosować następujące zmiany:
Zaktualizuj
php.ini
(Znajdź odpowiedni plik ini zphpinfo();
) i zwiększpost_max_size
iupload_max_filesize
dostosuj do odpowiedniego rozmiaru:Aktualizacja nginx ustawienia swojej stronie i dodać
client_max_body_size
wartość w swojejlocation
,http
lubserver
kontekstu.Uruchom ponownie NginX i PHP-FPM:
UWAGA: Kiedyś (w moim przypadku prawie za każdym razem) musisz zabić
php-fpm
proces, jeśli nie został poprawnie odświeżony poleceniem serwisowym. Aby to zrobić, możesz uzyskać listę procesów (ps -elf | grep php-fpm
) i zabijać jeden po drugim (kill -9 12345
) lub użyć następującego polecenia, aby zrobić to za Ciebie:źródło
Sprawdź, czy ustawiasz dyrektywę client_max_body_size w bloku http {}, a nie wewnątrz bloku {}. Ustawiłem go w bloku http {} i działa
źródło
Ktoś mnie poprawi, jeśli to źle, ale lubię blokować wszystko tak bardzo, jak to możliwe, a jeśli masz tylko jeden cel do przesyłania (jak to zwykle bywa), po prostu skieruj zmiany do tego jednego pliku. Działa to dla mnie na pakiet Ubuntu nginx-extras mainline 1.7+:
źródło
Miałem ostatnio podobny problem i odkryłem, że
client_max_body_size 0;
można go rozwiązać. Spowoduje to ustawienie client_max_body_size na brak limitu. Ale najlepszą praktyką jest poprawa kodu, więc nie ma potrzeby zwiększania tego limitu.źródło
Zakładając, że ustawiłeś już rozmiar klienta_max_body_size i różne ustawienia PHP (upload_max_filesize / post_max_size itp.) W innych odpowiedziach, a następnie ponownie uruchomiłeś lub ponownie załadowałem NGINX i PHP bez żadnego wyniku, uruchom ten ...
nginx -T
To da ci nierozwiązane błędy w twoich konfiguracjach NGINX. W moim przypadku walczyłem z błędem 413 przez cały dzień, zanim zdałem sobie sprawę, że były jeszcze inne nierozwiązane błędy SSL w konfiguracji NGINX (niewłaściwe ścieżki dla certyfikatów), które wymagały naprawy. Gdy naprawiłem nierozwiązane problemy, które otrzymałem z 'nginx-T', ponownie załadowałem NGINX i EUREKA !! To naprawiło to.
źródło
Konfiguruję serwer deweloperów, aby grać z tymi serwerami lustrzanymi naszego przestarzałego live, użyłem The Perfect Server - Ubuntu 14.04 (nginx, BIND, MySQL, PHP, Postfix, Dovecot i ISPConfig 3)
Po napotkaniu tego samego problemu natrafiłem na ten post i nic nie działało. Zmieniłem wartość w każdym zalecanym pliku (nginx.conf, ispconfig.vhost, / sites-available / default itp.)
Wreszcie, zmiana
client_max_body_size
w moim/etc/nginx/sites-available/apps.vhost
i restartowanie nginx jest tym, co załatwiło sprawę. Mam nadzieję, że pomaga komuś innemu.źródło
Napotykam ten sam problem, ale nie znalazłem nic wspólnego z nginx. Używam nodejs jako serwera zaplecza, używam nginx jako odwrotnego proxy, kod 413 jest uruchamiany przez serwer węzła. użycie węzła koa parsuje ciało. koa ogranicza długość urlencoded.
ustawienie formLimit na większe może rozwiązać ten problem.
źródło
Miałem ten sam problem, co
client_max_body_size
dyrektywa została zignorowana.Mój głupi błąd polegał na tym, że włożyłem do niego plik,
/etc/nginx/conf.d
który się nie kończył.conf
. Nginx nie ładuje ich domyślnie.źródło
Jeśli używasz systemu Windows w wersji nginx, możesz spróbować zabić cały proces nginx i uruchomić go ponownie, aby zobaczyć. Napotkałem ten sam problem w moim środowisku, ale rozwiązałem go za pomocą tego rozwiązania.
źródło
tasklist /fi "imagename eq nginx.exe"