結論
nginx
をWebサーバに採用、かつWebアプリケーションにファイルアップロードなどの機能を持たせる場合はclient_max_body_size
を適切な値に設定すること。
理由
nginx
で受け付けるリクエストボディのサイズ上限を設定する、client_max_body_size
のデフォルト値は1MBのため。
デフォルト値のままにしてデフォルト値を超えるファイルをアップロードしようとすると、HTTPステータス413
Payload Too Large
が返ってきてしまいます。
設定例
/etc/nginx/nginx.conf
http {
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;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 4096;
client_max_body_size 100m; # <- ここ
include /etc/nginx/mime.types;
default_type application/octet-stream;
# Load modular configuration files from the /etc/nginx/conf.d directory.
︙
終わりに
あまりWebサーバの設定を触ることがなかったので勉強になりました。
参考
http://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size
https://developer.mozilla.org/ja/docs/Web/HTTP/Status/413