問題:
Apache2 WebサーバーでDDOS攻撃またはリクエストのバーストが同時に発生すると、サーバー全体でRAMが不足してクラッシュする可能性があります。
考えられる解決策:
VirtualHostごとにWebサーバーへの同時接続の数を制限する
方法: Apache Webサーバーで直接実行される簡単で効果的な方法の1つは、モジュールを使用することです: mod_bw (mod_bandwidth)および mod_vhost_limit 。 mod_vhost_limitが好きです 設定がはるかに簡単で、私のテストによるとより効果的であることが証明されているためです。
環境:
Apache 2.2xxおよびApache2.4.xxと互換性があります。
注: Apache 2.4.xxの場合、モジュールをコンパイルする前に、元のソースコードの「パッチ適用」を行う必要があります。
手順:
ビルド環境ツールをインストールします:
apt-get install build-essential apache2-dev
モジュールソースをダウンロードして解凍します。wget http://apache.ivn.cl/files/source/mod_vhost_limit-0.2.tgz
tar fvxz mod_vhost_limit-0.2.tgz
Apache2.4.xxのみ
パッチを取得し、元のソースにパッチを適用します。
参照:https://github.com/pld-linux/apache-mod_vhost_limit
wget https://github.com/pld-linux/apache-mod_vhost_limit/archive/master.zip
unzip master.zip
cp apache-mod_vhost_limit-master/* mod_vhost_limit-0.2/
cd mod_vhost_limit-0.2/
patch mod_vhost_limit.c < mod_vhost_limit-apache24.patch
cd ..
Apache2.2..xxとApache2.4.xxの両方の場合
モジュールをコンパイル、インストール、有効化します:
cd mod_vhost_limit-0.2
/usr/bin/apxs2 -i -a -c mod_vhost_limit.c
service apache2 restart
VirtualHost構成でモジュールを使用します:
<VirtualHost ......>
...........
# Limits the concurrent requests to 1000 for this vhost
<IfModule vhost_limit_module>
MaxVhostClients 1000
</IfModule>
...........
</VirtualHost>