WordPressでテーマのzipファイルをアップロードしようとした際にブラウザで「413 Request Entity Too Large」エラーが発生。
さっそく対策します。
■動作確認環境
CentOS 7.7
Nginx 1.16.1
原因
WEBサーバ(Nginx)のデフォルト設定のアップロードファイルのサイズ上限(リクエストボディのデータ量の上限)に引っ掛かりエラーが出ていました。
Nginxでは、デフォルトのリクエストボディのデータ量の上限は1MBとなっていますので、設定を変更して上限を緩和しないとテーマのアップロード時などはエラーが出てしまいます。
対策
nginx.conf 又は 各ドメイン用の.conf 内に以下の1行を追加する。(※今回は最大10MBまでに設定)
1 |
client_max_body_size 10M; |
その後にNginxのリロード又は再起動でOKです。
ちなみに、「上限無し」の場合は、
1 |
client_max_body_size 0; |
と設定します。
■Nginxのサーバ全体に対応させる場合
vi等で /etc/nginx/nginx.conf を開く
1 |
# vi /etc/nginx/nginx.conf |
nginx.confのhtppディレクティブ内に「client_max_body_size」を設定する
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; keepalive_timeout 65; client_max_body_size 10M; ...略... } |
※ keepalive_timeout の下あたりが無難です。
変更後にNginxを再起動。
1 |
# systemctl restart nginx |
※php-fpmを利用している場合はphp-fpmも再起動しましょう。
1 |
# systemctl restart php-fpm |
以上で完了です。
■ドメインごとに設定する場合
vi等で各ドメイン用の.confファイルを開く
※例としてドメイン名は「example.com」とします。
1 |
# vi /etc/nginx/example.com.conf |
各ドメイン用の.confファイルのserverディレクティブ内に 「client_max_body_size」を設定する
※ listen の直下あたりが無難です。
1 2 3 4 5 6 7 |
server { server_name example.com; listen XXX.XXX.XXX.XXX; client_max_body_size 10M; ...中略 } |
変更後にNginxを再起動
1 |
# systemctl restart nginx |
※php-fpmを利用している場合はphp-fpmも再起動しましょう。
1 |
# systemctl restart php-fpm |
以上で完了です。
最終チェック
client_max_body_size の設定変更が終わったら、最後にアップロードのテストをしてエラーが出ないか確認しましょう。
それでもまだ「413 Request Entity Too Large」エラーが再発する場合は、php.ini の post_max_size と upload_max_filesize の設定変更も必要です。
php.ini の設定値を以下のように変更しましょう。(※最大10MBまでアップロード許可の場合の例です。)
1 2 |
post_max_size = 10M upload_max_filesize = 10M |
以上で解決です。