環境
CentOS 5.5(さくらのVPS)
Apache 2.2.19(ソースコンパイルでインストール)
まずはじめに、Apacheのhttpd.confに、以下のような設定ができれば対策完了とします。
なお、Rangeヘッダを無効にしてしまうと、ファイルダウンロードの中断時に、途中から再開ができなくなってしまうようですが、取り急ぎこの設定をまずは目標に進めたいと思います。
RequestHeader unset Range
RequestHeader unset Request-Range
RequestHeaderディレクティブを利用するには、mod_headerモジュールが必要です。
まず、自分の環境にmod_headerモジュールが有効になっているか、確認してみましょう。
$ /usr/local/apache2/bin/httpd -M
ここで、
headers_module (shared)という表示があれば、上記のRequestHeaderの設定を追加し、終了です。
無ければmod_headerのインストール。apxsコマンドを利用して、モジュールを追加コンパイルします。(なぜかネットにmod_headerの追加インストール方法の情報が少なかった。。)
# cd /usr/local/src/httpd-2.2.19/これで、httpd.confには
# cd modules/metadata
# /usr/local/apache2/bin/apxs -c mod_headers.c
# /usr/local/apache2/bin/apxs -ian headers mod_headers.la
・・・・・
chmod 755 /usr/local/apache2/modules/mod_headers.so
[activating module `headers' in /usr/local/apache2/conf/httpd.conf]
LoadModule headers_module modules/mod_headers.so
が自動的に追加され、RequestHeaderディレクティブが利用可能になります。
あとは、最初に記載した、
RequestHeader unset Range
RequestHeader unset Request-Range
をhttpd.confに追加し、Apacheを再起動すれば終了です。
◆ハマリどころ
Apacheのバージョンによる様ですが、mod_header.cの場所は、modules/mapper 下の場合もあるようです。見つからない方は、Apacheのソースがあるディレクトリで、
$find ./ -name *mod_header*
のコマンドを使って探してみてください。
0 件のコメント:
コメントを投稿