nginx terus berkata client intended to send too large body
. Googling dan RTM menunjuk saya ke client_max_body_size
. Saya mengaturnya 200m
di dalam nginx.conf
dan di vhost conf
, restart Nginx beberapa kali tapi saya masih mendapatkan pesan kesalahan.
Apakah saya mengabaikan sesuatu? Backend adalah php-fpm
( max_post_size
dan max_upload_file_size
diatur sesuai).
client_max_body_size
dihttp
bagian ini memiliki efek yang diharapkan dengan nginx versi 1.14.1Jawaban:
Mengikuti dokumentasi nginx , Anda dapat mengatur client_max_body_size 20m (atau nilai apa pun yang Anda butuhkan) dalam konteks berikut:
sumber
http
ataulocation
pengaturan. Bekerja ketika diatur padaserver
level. nginx / 1.4.4NGINX unggahan besar berhasil bekerja di situs WordPress yang dihosting, akhirnya (sesuai saran dari nembleton & rjha94)
Saya pikir mungkin bermanfaat bagi seseorang, jika saya menambahkan sedikit klarifikasi pada saran mereka. Sebagai permulaan, harap pastikan Anda telah memasukkan arahan unggah Anda yang meningkat dalam SEMUA TIGA blok definisi terpisah (server, lokasi & http). Masing-masing harus memiliki entri baris yang terpisah. Hasilnya akan menyukai sesuatu seperti ini (di mana ... mencerminkan baris lain di blok definisi):
(dalam pengaturan ISPconfig 3 saya, blok ini ada di file /etc/nginx/nginx.conf)
(dalam pengaturan ISPconfig 3 saya, blok-blok ini ada di file /etc/nginx/conf.d/default.conf)
Juga, pastikan bahwa file php.ini server Anda konsisten dengan pengaturan NGINX ini. Dalam kasus saya, saya mengubah pengaturan di bagian File_Uploads php.ini untuk membaca:
Catatan: jika Anda mengelola pengaturan ISPconfig 3 (pengaturan saya adalah pada CentOS 6.3, sesuai The Perfect Server ), Anda perlu mengelola entri ini dalam beberapa file terpisah. Jika konfigurasi Anda mirip dengan yang ada di pengaturan langkah-demi-langkah, file conf NGINX yang perlu Anda modifikasi ada di sini:
File php.ini saya ada di sini:
Saya terus mengabaikan blok http {} di file nginx.conf. Tampaknya, mengabaikan ini memiliki efek membatasi pengunggahan ke batas default 1M. Setelah membuat perubahan terkait, Anda juga ingin memastikan untuk memulai kembali layanan NGINX dan PHP FastCGI Process Manager (PHP-FPM) Anda. Pada konfigurasi di atas, saya menggunakan perintah berikut:
sumber
/etc/init.d/nginx reload
sebagai gantinya. Ini memiliki manfaat tambahan seperti 'jika konfigurasi salah' NginX tidak akan berhenti berfungsi.nginx -t
(menguji sintaks file konfigurasi) dan kemudiannginx -s reload
(melakukan reload sebenarnya) sebagai gantinya.Pada Maret 2016 , saya mengalami masalah ini mencoba POST json over https (dari permintaan python, bukan itu penting).
Caranya adalah dengan menempatkan "client_max_body_size 200M;" setidaknya di dua tempat
http {}
danserver {}
:1. yang
http
direktori/etc/nginx/nginx.conf
2. yang
server
direktori dalam vhost Anda./etc/nginx/sites-available/mysite.com
, bagi mereka yang tidak memiliki vhosts, itu mungkin nginx.conf Anda atau di direktori yang sama dengannya.3. para
location /
direktori di tempat yang sama seperti 2./
, tetapi jika tidak berfungsi sama sekali, saya akan merekomendasikan menerapkan ini/
dan kemudian setelah itu bekerja lebih spesifik.Ingat - jika Anda memiliki SSL, itu akan mengharuskan Anda untuk mengatur di atas untuk SSL
server
danlocation
juga, di mana pun itu (idealnya sama dengan 2. ). Saya menemukan bahwa jika klien Anda mencoba mengunggah di http, dan Anda berharap mereka mendapatkan 301'd ke https, nginx sebenarnya akan memutuskan koneksi sebelum pengalihan karena file terlalu besar untuk server http, jadi itu harus di keduanya .Komentar terbaru menunjukkan bahwa ada masalah dengan ini di SSL dengan versi nginx yang lebih baru, tetapi saya menggunakan 1.4.6 dan semuanya baik-baik saja :)
sumber
client_max_body_size
dihormati di bagianhttp
tanpa perlu menambahkannya di tempat lain.Anda perlu menerapkan perubahan berikut:
Update
php.ini
(Cari file ini langsung dariphpinfo();
) dan meningkatkanpost_max_size
danupload_max_filesize
untuk ukuran yang Anda inginkan:Perbarui nginx pengaturan untuk website Anda dan add
client_max_body_size
nilai dalam Andalocation
,http
atauserver
konteks.Mulai ulang NginX dan PHP-FPM:
CATATAN: Suatu saat (dalam kasus saya hampir setiap waktu) Anda harus mematikan
php-fpm
proses jika tidak menyegarkan dengan perintah layanan dengan benar. Untuk melakukannya, Anda bisa mendapatkan daftar proses (ps -elf | grep php-fpm
) dan membunuh satu per satu (kill -9 12345
) atau menggunakan perintah berikut untuk melakukannya untuk Anda:sumber
Silakan lihat apakah Anda mengatur direktif client_max_body_size di dalam blok http {} dan bukan di dalam blok lokasi {}. Saya telah mengaturnya di dalam blok http {} dan berfungsi
sumber
Seseorang mengoreksi saya jika ini buruk, tetapi saya ingin mengunci semuanya sebanyak mungkin, dan jika Anda hanya punya satu target untuk diunggah (seperti biasanya), maka targetkan perubahan Anda pada satu file itu. Ini berfungsi untuk saya di paket mainline nginx-ekstra Ubuntu 1.7+:
sumber
Saya memiliki masalah yang sama baru-baru ini dan menemukan, yang
client_max_body_size 0;
dapat memecahkan masalah seperti itu. Ini akan mengatur client_max_body_size ke batas. Tetapi praktik terbaik adalah meningkatkan kode Anda, jadi tidak perlu meningkatkan batas ini.sumber
Dengan anggapan Anda telah menetapkan client_max_body_size dan berbagai pengaturan PHP (upload_max_filesize / post_max_size, dll) di jawaban lain, lalu mulai ulang atau muat ulang NGINX dan PHP tanpa hasil apa pun, jalankan ini ...
nginx -T
Ini akan memberi Anda kesalahan yang tidak terselesaikan di konfigurasi NGINX Anda. Dalam kasus saya, saya berjuang dengan kesalahan 413 selama sehari penuh sebelum saya menyadari ada beberapa kesalahan SSL lain yang belum terselesaikan dalam konfigurasi NGINX (jalur salah untuk sertifikat) yang perlu diperbaiki. Setelah saya memperbaiki masalah yang belum saya selesaikan dari 'nginx -T', memuat ulang NGINX, dan EUREKA !! Itu memperbaikinya.
sumber
Saya menyiapkan server dev untuk bermain dengan mirror live lama kami, saya menggunakan The Perfect Server - Ubuntu 14.04 (nginx, BIND, MySQL, PHP, Postfix, Dovecot dan ISPConfig 3)
Setelah mengalami masalah yang sama, saya menemukan posting ini dan tidak ada yang berhasil. Saya mengubah nilai di setiap file yang disarankan (nginx.conf, ispconfig.vhost, / sites-available / default, dll.)
Akhirnya, mengubah nginx
client_max_body_size
saya/etc/nginx/sites-available/apps.vhost
dan memulai kembali adalah yang berhasil. Semoga ini bisa membantu orang lain.sumber
Saya menemui masalah yang sama, tetapi saya menemukan itu tidak ada hubungannya dengan nginx. Saya menggunakan nodejs sebagai server backend, menggunakan nginx sebagai proxy terbalik, kode 413 dipicu oleh server node. simpul menggunakan koa mem-parsing tubuh. koa batasi panjang urlencoded.
mengatur formLimit menjadi lebih besar dapat menyelesaikan masalah ini.
sumber
Punya masalah yang sama bahwa
client_max_body_size
arahan diabaikan.Kesalahan konyol saya adalah, bahwa saya meletakkan file di dalamnya
/etc/nginx/conf.d
yang tidak berakhir dengan.conf
. Nginx tidak akan memuat ini secara default.sumber
Jika Anda menggunakan versi windows nginx, Anda dapat mencoba untuk mematikan semua proses nginx dan restart untuk melihatnya. Saya mengalami masalah yang sama di lingkungan saya, tetapi mengatasinya dengan solusi ini.
sumber
tasklist /fi "imagename eq nginx.exe"