概要
/etc/Nginx/Nginx.conf にてclient_max_body_size 10m; を指定しているのに、1MB超のファイルをアップロードできない。↓
/etc/Nginx/conf.d/hogehoge.conf のserver 内を修正したら思った通り動いた話。
起こったこと
WebサーバにNginxを利用しているWebサービスにて、2MBちょっとのファイルをアップロードしようとすると、Nginxの 413 Request Entity Too Large エラー が発生しました。このエラーは、Nginxが許容しているよりも大きいのサイズのデータがサーバに送られたときに起こるエラーです。
Nginx構築時に10MBまでOKとするように、/etc/Nginx/Nginx.conf のhttp内には「 client_max_body_size 10m; 」と指定しているので、2MB程度では起きない認識でした。
エラーが発生したサーバの状況は次のとおりです。
- OS:CentOS6.5
- Nginx:1.6.3(リバースプロキシのために利用。)
- サーバPGM:Node.js
確認したこと
→ bodyParserの設定を確認。{limit: '10mb'} が設定されていることを確認。
→ Nginxの再起動(service nginx restart) → 状況は変わらず。
エラーコードでググっても、nginx.confのhttpディレクティブにclient_max_body_size を指定すればOKとしか見つけられません。
そこで、今度は検索語句を「Nginx client_max_body_size doesn't work」に変更し再度ググったところ、それっぽい情報がみつかりました。
解決策
Nginxのバージョンによっては、httpディレクティブに記載すると無視されるが、serverディレクティブではとのこと。In case anyone else googles this: Nginx 1.1.19 (on Ubuntu 12.04) seems to ignore client_max_body_size in the 'http' directive,「http内に書いていると無視されるけど、server内に書けば動くよ」的なことを言っています。
although it's fine with it in 'server'.
This seems to have been introduced in an update in the last 6 months or so,
because for me the same config file on the same server used to work. – Dave Apr 10 '14 at 11:42
http://stackoverflow.com/questions/2056124/nginx-client-max-body-size-has-no-effect より
(今回使っているNginxのバージョンとは違うのが気にはなりますが。。。)
試しに/etc/Nginx/conf.d/hogehoge.conf にclient_max_body_size 10mを追記したのち、Nginxを再起動すれば無事動きました。
server { listen 443; server_name hogehoge.com; ssl on; (省略) + client_max_body_size 10m; }
いまいちスッキリしませんが、同じことでハマったときはダメ元で試す価値はありそうです。
0 件のコメント :
コメントを投稿