nginxはclient intended to send too large body
と言い続けます。グーグルとRTMはclient_max_body_size
を示してくれました。 200m
とnginx.conf
でvhost conf
に設定し、Nginxを数回再起動しましたが、エラーメッセージが表示されます。
私は何かを見落としていましたか?バックエンドはphp-fpm
です(max_post_size
とmax_upload_file_size
はそれに応じて設定されます)。
nginx documentation に続いて、次のコンテキストでclient_max_body_size 20m(または必要な任意の値)を設定できます。
context: http, server, location
NGINXの大規模なアップロードは、ホストされているWordPressサイトで正常に機能しています。
私は彼らの提案に少し明確化を加えれば、それが誰かに役立つかもしれないと思った。まず最初に、増加したアップロードディレクティブをすべて3つの個別の定義ブロック(サーバー、場所、およびhttp)に含めたことを確認してください。それぞれに個別の行エントリが必要です。結果は次のようになります(...は定義ブロックの他の行を反映します)。
http {
...
client_max_body_size 200M;
}
(私のISPconfig 3セットアップでは、このブロックは/etc/nginx/nginx.confファイルにあります)
server {
...
client_max_body_size 200M;
}
location / {
...
client_max_body_size 200M;
}
(私のISPconfig 3セットアップでは、これらのブロックは/etc/nginx/conf.d/default.confファイルにあります)
また、サーバーのphp.iniファイルがこれらのNGINX設定と一致していることを確認してください。私の場合、php.iniのFile_Uploadsセクションの設定を次のように変更しました。
upload_max_filesize = 200M
注:ISPconfig 3セットアップを管理している場合(私のセットアップは The Perfect Server に従ってCentOS 6.3上にあります)、これらのエントリをいくつかの個別のファイルで管理する必要があります。構成が段階的なセットアップの構成に似ている場合、変更する必要があるNGINX confファイルは次の場所にあります。
/etc/nginx/nginx.conf
/etc/nginx/conf.d/default.conf
私のphp.iniファイルは次の場所にありました。
/etc/php.ini
Nginx.confファイルのhttp {}ブロックを見落とし続けました。どうやら、これを見落とすと、アップロードを1Mのデフォルト制限に制限する効果がありました。関連する変更を行った後、NGINXおよびPHP FastCGI Process Manager(PHP-FPM)サービスを必ず再起動する必要があります。上記の構成では、次のコマンドを使用します。
/etc/init.d/nginx restart
/etc/init.d/php-fpm restart
2016年3月の時点で、https経由でPOST jsonを実行しようとするとこの問題に遭遇しました(pythonリクエストから、それは重要ではありません)。
コツは"client_max_body_size 200M;"少なくとも2つの場所http {}
およびserver {}
:
1。http
ディレクトリ
/etc/nginx/nginx.conf
2。 vhostのserver
ディレクトリ。
/etc/nginx/sites-available/mysite.com
、vhostsを持たないユーザーの場合、おそらくnginx.confまたは同じディレクトリにあります。。2。と同じ場所にあるlocation /
ディレクトリ
/
よりも具体的にすることもできますが、それがまったく機能しない場合は、これを/
に適用してから、その動作をより具体的にすることをお勧めします。覚えておく-SSLを使用している場合は、SSLのserver
とlocation
にも上記を設定する必要があります(理想的には2。と同じです)。クライアントがhttpでアップロードしようとすると、httpsに対して301'dになると予想される場合、nginxはhttpサーバーに対して大きすぎるファイルのためにリダイレクトの前に実際に接続をドロップすることがわかったので、 inboth。
最近のコメントは、新しいnginxバージョンのSSLでこれに問題があることを示唆していますが、私は1.4.6であり、すべてが良いです:)
次の変更を適用する必要があります。
php.ini
(phpinfo();
から適切なiniファイルを検索)を更新し、post_max_size
およびupload_max_filesize
を必要なサイズに増やします。
sed -i "s/post_max_size =.*/post_max_size = 200M/g" /etc/php5/fpm/php.ini
sed -i "s/upload_max_filesize =.*/upload_max_filesize = 200M/g" /etc/php5/fpm/php.ini```
WebサイトのNginX設定を更新し、location
、http
、またはserver
コンテキストにclient_max_body_size
値を追加します。
location / {
client_max_body_size 200m;
...
}
NginXとPHP-FPMを再起動します。
service nginx restart
service php5-fpm restart
注:いつか(ほとんどの場合、ほとんどの場合)、サービスコマンドによって適切に更新されなかった場合は、php-fpm
プロセスを強制終了する必要があります。これを行うには、プロセスのリスト(ps -elf | grep php-fpm
)を取得して1つずつ強制終了(kill -9 12345
)するか、次のコマンドを使用して実行します。
ps -elf | grep php-fpm | grep -v grep | awk '{ print $4 }' | xargs kill -9
Location {}ブロック内ではなく、http {}ブロック内にclient_max_body_sizeディレクティブを設定しているかどうかを確認してください。 http {}ブロック内に設定しましたが、動作します
これが悪い場合は誰かが私を修正しますが、可能な限りすべてをロックダウンし、アップロードのターゲットが1つしかない場合(通常の場合)、その1つのファイルへの変更をターゲットにします。これは、Ubuntu nginx-extrasメインライン1.7+パッケージで機能します。
location = /upload.php {
client_max_body_size 102M;
fastcgi_param PHP_VALUE "upload_max_filesize=102M \n post_max_size=102M";
(...)
}
他の回答でclient_max_body_sizeとさまざまなPHP設定(upload_max_filesize/post_max_sizeなど)を既に設定し、NGINXとPHPを結果なしで再起動または再ロードした場合、これを実行します。 。
nginx -T
これにより、NGINX設定で未解決のエラーが発生します。私の場合、NGINXの設定(証明書の誤ったパス)に修正が必要な他の未解決のSSLエラーがあることに気付く前に、1日413エラーに苦労しました。 「nginx -T」から取得した未解決の問題を修正し、NGINXをリロードし、EUREKAを追加しました!!それはそれを修正しました。
私は古いサーバーをミラーリングするために開発サーバーを設定していますが、使用しました The Perfect Server-Ubuntu 14.04(nginx、BIND、MySQL、PHP、Postfix、Dovecot and ISPConfig 3)
同じ問題を経験した後、私はこの投稿に出会いましたが、何も機能していませんでした。すべての推奨ファイルの値を変更しました(nginx.conf、ispconfig.vhost、/ sites-available/defaultなど)
最後に、client_max_body_size
で/etc/nginx/sites-available/apps.vhost
を変更し、nginxを再起動することがトリックの原因です。うまくいけば、それは他の誰かを助ける。
私は同じ問題に遭遇しましたが、nginxとは何の関係もありませんでした。 nodejsをバックエンドサーバーとして使用し、nginxをリバースプロキシとして使用します。413コードはノードサーバーによってトリガーされます。 node use koa 本文を解析します。 koaは、urlencodedの長さを制限します。
formLimit:urlencodedボディの制限。本文がこの制限よりも大きくなると、413エラーコードが返されます。デフォルトは56kbです。
formLimitを大きく設定すると、この問題を解決できます。
最近似たような問題があり、client_max_body_size 0;
がそのような問題を解決できることがわかりました。これにより、client_max_body_sizeが無制限に設定されます。しかし、ベストプラクティスはコードを改善することです。そのため、この制限を増やす必要はありません。
client_max_body_size
ディレクティブが無視されるのと同じ問題がありました。
私の愚かなエラーは、/etc/nginx/conf.d
で終わっていないファイルを.conf
の中に置いたことでした。 Nginxはデフォルトではこれらをロードしません。