Nginxのエラーログ「client request body is buffered to a temporary file」対策・設定方法まとめ(ワードプレス)


Nginxでの定番のエラーログ
「client request body is buffered to a temporary file 」
の対応方法を調査しました。
これでもう悩まされることはないはず。
このエラーログです
2018/10/27 18:51:59 [warn] 6610#6610: *1078199 a client request body is buffered to a temporary file /var/cache/nginx/client_temp/0000000045, client: xxx.xx.xxx.xx, server: doudonn.com, request: "POST /wp-admin/async-upload.php HTTP/1.0", host: "doudonn.com", referrer: "https://doudonn.com/wp-admin/upload.php"
おそらく、Nginxを始めた人は誰もが目にするエラーログ。
初期設定でワードプレスを使うと必ずこうなると思います。
このエラーコードの意味
アップロードされたファイル等に使ったバッファが、
設定しているバッファのサイズを超えたよ!という意味。
リクエストボディに使うバッファの容量不足です。
受け皿として確保しているメモリに入らなかったものと考えればOKです。
入らなかった分はディスクに入れるので動作的には完了するのですが、
速度が落ちてしまいます。
ワードプレスの場合、アップロードするのはほぼ管理人だけなので、全く問題ないエラーです。
自分のアップロードだけで発生するのであれば無視していい。
対策方法(どうしてもエラーを無くす場合)
Nginxのconfファイルの次の値を変更します。
(自分の場合は「/etc/nginx/nginx.conf」)
<バッファ利用しない設定にする場合>
location /wp-admin{
proxy_request_buffering off;
//その他設定//
}
アップロードフォルダではバッファを使わない設定にします。
<バッファを使用する場合>
location /wp-admin{
client_body_buffer_size 2m;
client_max_body_size 3m
//その他設定//
}
2MBにすれば、約2500KBまでのアップロードに対応できます(検証済)。
おおよそアップロードサイズの80%にすれば良い。
自分の場合、大きくても2MBなのでこう設定しました。
デフォルトでは16K(32ビット環境では8K)です。
この場合、テキストデータくらいしか対応できません。
記事の保存やコメント投稿もアップロードとなるので、本当にそれくらい。
画像アップロードで2MBは必ず使われる。
投稿型サイトだとこれでメモリが大量消費されますが、個人ワードプレスなら問題ない。
こんな程度なので、エラーログさえ気にならないのであれば、
デフォルト値の16Kでも問題無いです。
まとめ
無視しても良いエラーですが、
気になるなら上限アップロードサイズの80%の値に設定するか、バッファをOFFに。
これにてエラーは発生しなくなります。
この機能はアップロードをスムーズにするためにあるので、
本当に管理人だけならどうでもいいものです。
万一、何かでアップロードが大量にあった場合サーバーダウンしてしまうので、
リスクを下げるのであればデフォルト値の方が良いかと思います。
アップロード系はアクセスログを見る限り、管理人しかアクセスしていない。
しかしプラグインなどによって違うと思いますので、一応アクセスログを確認してみてください。
access.log・error.logはパソコンにダウンロードして見るのが良いです。