Apache2でセッション数制限や、帯域制限を行うには、mod_cbandと言ったモジュールを使うらしい。
FedoraCore6には、yumでmod_cbandが提供されているので、さっそく入れてみた。
yumなので、インストール手順は省くが、/etc/httpd/conf.d/の中にmod_cband.confファイルが作成される。
mod_cband.confの中の、VirtualHost部分を修正する。
※今回は、ダウンロードツール対策として、
1.同じ人からのファイルのアクセスは、1秒間に10個まで。
2.自宅で動いているので、Apache自身へのアクセスを20個まで。
とします。
DocumentRoot /var/www/html/
ServerName www.jhhk-family.net
CustomLog /var/log/httpd/access.log combined
ErrorLog /var/log/httpd/error.log
RewriteEngine On
RewriteOptions inherit
#
# # Maximal 1024kbps speed for this virtualhost
# # Maximal 10 requests per second for this virtualhost
# # Maximal 30 open connections for this virtualhost
※Apacheへの接続に対して最大の転送速度を1024kb/s。一秒間に20リクエスト、同時接続数を5に制限。
CBandSpeed 1024 20 5
#
# # Maximal 10kB/s speed, 3 requests/s and 2 open connections for any
# remote client
※同一のIPアドレスからの接続対して、最大の転送速度が1024kb/s。一秒間に10リクエスト、同時接続数を 5に制限している。
CBandRemoteSpeed 1024kb/s 10 5
#
# # Maximal 20kB/s speed, 2 requests/s and 3 open connections for
# remote
# # clients from class googlebot_class 😛
# CBandClassRemoteSpeed googlebot_class 20kb/s 2 3
最後に、Apacheを再起動すると完了。
ためしに、自宅からダウンロードツールを使って、連番の画像ファイルを根こそぎダウンロードしてみると、ファイルはダウンロードされずに、0バイトの空のjpgが複数作成されただけでした。