nginx のアップロードサイズ制限
Knowledge というオープンソースのソフトウェアを使用しているのですが、その中でファイルをアップロードしたところ「アップロードに失敗しました」とメッセージが表示されアップロードできませんでした。
原因を調べたところ nginx のデフォルトが 1M までということが分かり、 client_max_body_size を適切に設定することで対応することができました。
Knowledge は次の環境で運用しています。
- nginx
- tomcat
サーバで取り扱うサイズの変更
http://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size によると、 nginx ではデフォルトで1MBまでのデータしか受け付けない設定になっています。
nginx が1MBより大きなデータを扱えるようにするには、 conf ファイルに client_max_body_size ディレクティブを設定します。
server {
listen 80;
server_name localhost;
client_max_body_size 10M;
location / {
root /var/www/html;
index index.html index.htm;
}
location /knowledge/ {
proxy_pass http://localhost:8080/knowledge/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
}
・・・・・
}
今回は、 Knowledge というアプリケーション上で発生したエラーでしたが、「413 Request Entity Too Large」などのエラーが発生することもあります。