Saya menjalankan nginx / ruby-on-rails dan saya memiliki formulir multi-bagian sederhana untuk mengunggah file. Semuanya berfungsi dengan baik sampai saya memutuskan untuk membatasi ukuran maksimum file yang ingin saya unggah. Untuk melakukan itu, saya mengatur nginx client_max_body_size
ke 1m (1MB) dan mengharapkan status HTTP 413 (Request Entity Too Large) sebagai tanggapan ketika aturan itu rusak.
Masalahnya adalah ketika saya mengunggah file 1,2 MB, alih-alih menampilkan halaman kesalahan HTTP 413, browser sedikit macet dan kemudian mati dengan pesan "Sambungan disetel ulang saat halaman sedang dimuat".
Saya sudah mencoba hampir semua opsi yang ada yang ditawarkan nginx, sepertinya tidak ada yang berhasil. Apakah ada yang punya ide tentang ini?
Inilah nginx.conf saya:
worker_processes 1;
timer_resolution 1000ms;
events {
worker_connections 1024;
}
http {
passenger_root /the_passenger_root;
passenger_ruby /the_ruby;
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name www.x.com;
client_max_body_size 1M;
passenger_use_global_queue on;
root /the_root;
passenger_enabled on;
error_page 404 /404.html;
error_page 413 /413.html;
}
}
Terima kasih.
**Edit**
Lingkungan / UA: Windows XP / Firefox 3.6.13
sumber
Content-Length
daripada melakukanTransfer-Encoding: chunked
.Expect
cara untuk pergi untuk permintaan besar.request.setHeader(HttpHeaders.EXPECT, CONTINUE);
denganimport org.apache.http.HttpHeaders;
danimport static org.jboss.netty.handler.codec.http.HttpHeaders.Values.CONTINUE;
Apakah unggahan Anda mati di akhir? 99% sebelum mogok? Tubuh klien dan buffer adalah kuncinya karena nginx harus menyangga data yang masuk. Konfigurasi body (data dari request body) menentukan bagaimana nginx menangani aliran massal data biner dari klien multi-part-form ke dalam logika aplikasi Anda.
The
clean
Pengaturan membebaskan memori dan konsumsi batas dengan menginstruksikan nginx untuk menyimpan penyangga yang masuk dalam file dan kemudian membersihkan file ini kemudian dari disk dengan menghapus itu.Setel
body_in_file_only
keclean
dan sesuaikan buffer untukclient_max_body_size
. Konfigurasi pertanyaan asli sudah mengaktifkan sendfile, tambah waktu tunggu juga. Saya menggunakan pengaturan di bawah untuk memperbaikinya, sesuai dengan konteks konfigurasi, server, & http lokal Anda.sumber
openshift
php7
nginx
.Dari dokumentasi :
Saya menduga inilah yang terjadi, jika Anda memeriksa HTTP ke sana kemari menggunakan alat seperti Firebug atau Live HTTP Headers (keduanya ekstensi Firefox), Anda akan dapat melihat apa yang sebenarnya terjadi.
sumber