apache2.4にしたらファイルアップロードができなくなった

環境apache

Amazon Linux で yum update したら Apache2.4 にバージョンが上がった。それから 25 MG 以上のファイルをアップロードしようとすると、ブラウザで「接続がリセットされました( ERR_CONNECTION_RESET )」エラーになってアップロードができなくなった。 yum update する前は正常に動いていた。

結論
mod_reqtimeout っていうモジュールの RequestReadTimeout というディレクティブの設定値を修正したら、アップロードできるようになった。 Apache の設定で、接続がタイムアウトになっていた。

/etc/httpd/conf/httpd.conf

<IfModule reqtimeout_module>
   RequestReadTimeout header=20-50,MinRate=500 body=50,MinRate=500
</IfModule>

httpd.conf を修正したら、 httpd 再起動

$ service httpd restart

<IfModule reqtimeout_module></IfModule> はなくても動いた。 
IfModule は、条件判定文で、このモジュールがインストールされていたら、書いた設定が適用される。

説明
RequestReadTimeout は、リクエストヘッダーとボディの受信時間を制限する設定で、ここに設定した制限時間を超えるとタイムアウトとなる。

Apache バージョン 2.2.15 以降から使えるようになって、デフォルトで無効だったが、バージョン 2.3.15 以降デフォルトが有効になっている。
(今回は、バージョンアップデートされて、デフォルト設定が有効になったために発生したと考えられる。)

構文 : RequestReadTimeout [header=timeout[-maxtimeout][,MinRate=rate] [body=timeout[-maxtimeout][,MinRate=rate]

バージョン 2.3.15 以降のデフォルト値 : header=20-40,MinRate=500 body=20,MinRate=500

デフォルト値では、ヘッダとボディは 20 秒で受信が終わらないとタイムアウトとなる。ヘッダーは maxtimeout が付いているので、500 バイト/秒 以上のデータを受信している間は、 40 秒まで延長される。

RequestReadTimeout header=0 body=0 はタイムアウトを無効にする設定で、無制限となる。

Posted by Agopeanuts