nginxで413 Request Entity Too Largeが表示される場合の対応方法
環境
CentOS 6.4
nginxで413Request Entity Too Large
wordpressにスクリーンショットの画像をupload使用とすると、エラーでアップロードできません。
ブラウザ上ではHTTPエラーと表示されています。
うまくいかない場合は、ブラウザーアップローダーを使用してと表示されているので、素直に従ってブラウザーアップローダーで画像をアップロードしてみます。
ブラウザーアップローダーを使用すると、nginxが「413 Request Entity Too Large」のエラーを吐いているのがわかりました。
エラーメッセージの内容から、リクエストしたEntityが大きすぎる事が原因であることがわかります。
nginxの公式ページで調べてみると、「client_max_body_size」の項目を設定することで、より大きなファイルに対応させることが出来る事がわかりましたので、早速設定します。
http://wiki.nginx.org/HttpCoreModule#client_max_body_size
設定書式等
公式のサイトでは、下記のような説明が記述されています。
Syntax: client_max_body_size size
Default: client_max_body_size 1m;
Context: http,server,location
上記のことから、client_max_body_sizeの初期値は1mで、 http,server,locationの部分に設定できることがわかります。
設定ファイル更新
nginxの設定ファイルである、nginx.confの設定をします。まずは、念のためバックアップを取ってから作業をします。
# cp -p /etc/nginx/nginx.conf /etc/nginx/nginx.conf_yyyymmdd # vi /etc/nginx/nginx.conf
nginx.conf 設定例
実際には赤字で記述したような箇所に設定することができます。http部分であればhttpモジュール全体に、serverであれば設定されているサーバ事に、location部分であればその部分URIのみに設定を反映させることができます。
http { include /etc/nginx/mime.types; default_type application/octet-stream; access_log /var/log/nginx/access.log main; sendfile on; keepalive_timeout 65; client_max_body_size 10M; upstream server-memo { server 127.0.0.1:10080; } server { listen 80; server_name www.server-memo.net; client_max_body_size 500M; location / { proxy_pass http://server-memo/; client_max_body_size 1G; } } }
※私の場合は、server部分にclient_max_body_size 10Mと設定しました。
設定反映
nginx.confの設定完了後、nginxをreloadさせることで設定を反映さえることができます。
# service nginx reload
設定を追加したあとに、エラーを起こしていたファイルを再度アップロードしてみたところ、無事アップロードすることが出来るようになりました!
コメント