2011年9月3日土曜日

mod_header追加インストールとApache Killer対策

少々前になりますが、mod_headerの追加インストールと、ApacheKiller対策を行いましたので雑記的にメモしておきます。

環境
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/
# 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]
これで、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 件のコメント:

コメントを投稿