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


54

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;
  }

しかし、ファイル全体がアップロードされると、このエラーが表示されます。

回答:


71

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

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


1
nginx.confのclient_max_body_sizeに100Mbが必要な理由
user2979409

あなたの要件に従って任意の値を入れることができますが、100メガバイトは十分です
Sukhjinderシン

ただし、最大30Gbのファイルをアップロードしています。
-user2979409

最大サイズのファイルを見つけて、それ以上のファイルを許可します
スフジンダーシン

なぜclient_max_body_sizeが/ location内で機能しないのですか?
user2979409

9

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

client_max_body_size 0;

3

敬意を表して、なぜそんなに多くのデータを転送するのに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)。

上記または他のいくつかの選択肢のいずれかを検討していただければ幸いです。


これは質問とは関係ありません。
ゼンクリス

1
男がhttp経由でBluerayスケールのファイルを転送しているため、そこにしかありません。なぜ誰かがこれをしたいのかについての詳細はありませんが、質問に答えるのがうまくいかないと、質問をする人に最も役立つと判断します。私はこれらの詳細の私の無知が問題であることを認めます。
マットマーフィー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.