apache2.4にしたらファイルアップロードができなくなった
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
はタイムアウトを無効にする設定で、無制限となる。