nginxでclient_max_body_sizeを設定する

さくらクラウドでのベンチマークを前回載せましたが、そのままnginx + fastCGI環境を作成して、WordPressを動かして、こちらのblogとは別の日記的なものとしてしばらく動かしてました。

http://www.sioazike.info/wordpress/

今日、デジカメで撮った写真をアップロードしようと思ったところ、HTTPエラーと表示され、アップロードできない事象が発生しました。最初はphp.iniの設定を疑いましたがそちらは問題なし。
調べてみるとnginxでPOST時のbodyサイズに制限があり、デフォルト1Mになっていることがわかりました。

エラー時のログにはclient intended to send too large body: 2399012 bytesというようなメッセージが見られます。

さて、設定ファイルにclient_max_body_sizeを設定すれば良いようです。今のところ使っているのはwordpressだけなので、phpのlocationのところに記載すれば良いかなと思ったので、以下のようにしました。

変更後

        location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /usr/local/www/nginx$fastcgi_script_name;
            include        fastcgi_params;
            client_max_body_size 4M;  #ここを追加
        }

これで問題なくアップロードができるようになりました。