“413 Permintaan Entitas Terlalu Besar” di Nginx dengan set “client_max_body_size”

55

Saya mengunggah file 26Gb, tetapi saya mendapatkan:

413 Request Entity Too Large

Saya tahu, ini terkait dengan client_max_body_size, jadi saya mengatur parameter ini ke 30000M.

  location /supercap {
    root  /media/ss/synology_office/server_Seq-Cap/;
    index index.html;
    proxy_pass  http://api/supercap;
  }

  location /supercap/pipe {
    client_max_body_size 30000M;
    client_body_buffer_size 200000k;
    proxy_pass  http://api/supercap/pipe;
    client_body_temp_path /media/ss/synology_office/server_Seq-Cap/tmp_nginx;
  }

Tapi saya masih mendapatkan kesalahan ini ketika seluruh file telah diunggah.

pengguna2979409
sumber

Jawaban:

72

Ubah File Konfigurasi NGINX

sudo nano /etc/nginx/nginx.conf

Mencari variabel ini: client_max_body_size. Jika Anda menemukannya, tambahkan saja ukurannya ke 100 juta, misalnya. Jika tidak ada, maka Anda dapat menambahkannya di dalam dan di akhir http

client_max_body_size 100M;

Mulai ulang nginx untuk menerapkan perubahan.

sudo service nginx restart

Ubah File PHP.ini untuk Batas Upload

Ini tidak diperlukan pada semua konfigurasi, tetapi Anda mungkin juga harus memodifikasi pengaturan unggah PHP juga untuk memastikan bahwa tidak ada yang keluar dari batas oleh konfigurasi php.

Jika Anda menggunakan PHP5-FPM, gunakan perintah berikut,

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

Jika Anda menggunakan PHP7.0-FPM gunakan perintah berikut,

sudo nano /etc/php/7.0/fpm/php.ini

Sekarang temukan arahan berikut satu per satu

upload_max_filesize
post_max_size

dan meningkatkan batasnya hingga 100 juta, secara default 8M dan 2 juta.

upload_max_filesize = 100M
post_max_size = 100M

Akhirnya simpan dan mulai ulang PHP.

Pengguna PHP5-FPM menggunakan ini,

sudo service php5-fpm restart

Pengguna PHP7.0-FPM menggunakan ini,

sudo service php7.0-fpm restart

Ini akan bekerja dengan baik !!!

Sukhjinder Singh
sumber
1
mengapa 100MB untuk client_max_body_size di nginx.conf?
user2979409
Anda dapat memberikan nilai sesuai dengan kebutuhan Anda, tetapi 100 mb sudah cukup
Sukhjinder Singh
tapi saya mengunggah hingga 30 GB file.
user2979409
temukan file dengan ukuran maksimum dan biarkan lebih dari file itu
Sukhjinder Singh
jadi mengapa client_max_body_size tidak berfungsi di dalam / lokasi saya?
user2979409
9

Jika Anda mengunggah file dengan ukuran seperti itu, Anda mungkin harus menonaktifkan pemeriksaan ukuran tubuh bersamaan dengan:

client_max_body_size 0;
devius
sumber
3

Dengan hormat, saya tidak yakin mengapa Anda menggunakan http untuk mentransfer data sebanyak itu. Saya cenderung melakukan transfer besar saya melalui ssh

//such as:
tar cjf - /path/to/stuff | ssh user@remote-host "cd /path/to/remote/stuff;tar xjf -"

... yang memberi saya transfer yang dikompresi bzip. Tetapi jika saya perlu melakukan transfer yang dapat dilanjutkan, saya mungkin menggunakan sftp, lftp, bahkan rsync. Siapa pun dari mereka (atau turunan atau saudara kandungnya) yang mampu

  1. menggunakan saluran terenkripsi jika diinginkan,
  2. melanjutkan transfer yang terputus dan
  3. mengompresi transfer

Hanya satu dari itu yang akan menjadi pilihan bagi Anda ketika mencoba mengunggah melalui http (yaitu, # 1 jika Anda menggunakan https).

Saya harap Anda akan melihat salah satu dari alternatif di atas atau beberapa lainnya.

Matt Murphy
sumber
Ini tidak ada hubungannya dengan pertanyaan.
Zenklys
1
Itu hanya ada karena orang itu mentransfer file skala Blueray melalui http. Tanpa memiliki detail lebih lanjut mengapa seseorang ingin melakukan ini, saya menilai bahwa pria yang mengajukan pertanyaan sebaiknya dilayani dengan tidak berhasil menjawab pertanyaan. Saya mengakui bahwa ketidaktahuan saya tentang detail itu adalah masalah.
Matt Murphy