web-dev-qa-db-ja.com

「client_max_body_size」が設定されたNginxの「413 Request Entity Too Large」

26Gbファイルをアップロードしていますが、次のようになっています。

413 Request Entity Too Large

これはclient_max_body_sizeに関連しているので、このパラメーターを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;
  }

しかし、ファイル全体がアップロードされた場合でも、このエラーが発生します。

62
user2979409

NGINX構成ファイルの変更

Sudo nano /etc/nginx/nginx.conf

この変数を検索:client_max_body_size。見つかったら、たとえばサイズを100Mに増やしてください。存在しない場合は、httpの内部と末尾に追加できます。

client_max_body_size 100M;

Nginxを再起動して変更を適用します。

Sudo service nginx restart

アップロード制限のためにPHP.iniファイルを変更

すべての構成で必要なわけではありませんが、PHPアップロード設定も変更して、php構成による制限を超えないようにする必要があります。

PHP5-FPMを使用している場合は、次のコマンドを使用します。

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

PHP7.0-FPMを使用している場合は、次のコマンドを使用します。

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

次のディレクティブを1つずつ見つけます

upload_max_filesize
post_max_size

上限を100Mに増やします。デフォルトでは、8Mおよび2Mです。

upload_max_filesize = 100M
post_max_size = 100M

最後にそれを保存し、PHPを再起動します。

PHP5-FPMユーザーはこれを使用し、

Sudo service php5-fpm restart

PHP7.0-FPMユーザーはこれを使用し、

Sudo service php7.0-fpm restart

それはうまくいきます!!!

84

そのサイズのファイルをアップロードする場合は、ボディサイズチェックを無効にする必要があります。

client_max_body_size 0;
13
devius

尊重して、なぜあなたがhttpを使ってそんなに多くのデータを転送しているのかはわかりません。 ssh経由で大規模な転送を行う傾向がある

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

... bzip圧縮された転送ができます。しかし、再開可能な転送を行う必要がある場合は、sftp、lftp、さらにはrsyncを使用する可能性があります。それらの(またはそれらの派生物または兄弟)のいずれかが可能です

  1. 必要に応じて暗号化されたチャネルを使用し、
  2. 中断された転送を再開し、
  3. 転送の圧縮

Http経由でアップロードしようとすると、そのうちの1つだけがオプションになります(つまり、httpsを使用している場合は#1)。

上記のいずれかまたは他のいくつかの代替手段を検討していただければ幸いです。

4
Matt Murphy