mod_limitipconn 0.23 Install (source)


Apacheに接続制御モジュールmod_limitipconnをインストールした時のメモ。

  • Apache 2.2.14
  • mod_limitipconn 0.23

まずはDavid Jao Softwareのサイトから落としてくる。

$ tar xjvf mod_limitipconn-0.23.tar.bz2

DSOで読ませるのでmakeファイルのPATHを合わせる。

$ cd mod_limitipconn-0.23
$ vi Makefile
##
##  Makefile -- Build procedure for sample limitipconn Apache module
##  Autogenerated via ``apxs -n limitipconn -g''.
##

#   the used tools
APXS=/usr/bin/apxs
APACHECTL=/usr/sbin/apache2ctl

#   additional user defines, includes and libraries
#DEF=-Dmy_define=my_value
#INC=-Imy/include/dir
#LIB=-Lmy/lib/dir -lmylib

#   the default target
all: mod_limitipconn.so

#   compile the DSO file
mod_limitipconn.so: mod_limitipconn.c
	$(APXS) -c $(DEF) $(INC) $(LIB) mod_limitipconn.c

#   install the DSO file into the Apache installation
#   and activate it in the Apache configuration
install: all
	$(APXS) -c -i -a -n 'limitipconn' mod_limitipconn.c

#   cleanup
clean:
	-rm -rf mod_limitipconn.o mod_limitipconn.so mod_limitipconn.lo mod_limitipconn.slo mod_limitipconn.la .libs

#   simple test
test: reload
	lynx -mime_header http://localhost/limitipconn

#   reload the module by installing and restarting Apache
reload: install restart

#   the general Apache start/restart/stop procedures
start:
	$(APACHECTL) start
restart:
	$(APACHECTL) restart
stop:
	$(APACHECTL) stop

メイクしてインストール。

$ su
# make install


ここでは特定のディレクトリにあるアーカイブファイルに対する同時アクセスを3に絞るように設定する。

# vi /etc/apache2/conf/httpd.conf
...
LoadModule limitipconn_module /usr/lib64/apache2/modules/mod_limitipconn.so
...
<IfModule mod_limitipconn.c>
ExtendedStatus On
   <Directory "/path/to/directory">
      <FilesMatch "\.(zip|lzh|rar|sit|tgz)$">
         MaxConnPerIP 3
      </FilesMatch>
   </Directory>
</IfModule>

Apacheを再起動する。

# service apache2 restart

Apache2 HTTP Serverを停止中:				[  OK  ]
Apache2 HTTP Serverを起動中:				[  OK  ]

モジュールが読み込まれたか確認する。

# apache2ctl -M

Loaded Modules:
 core_module (static)
 mpm_worker_module (static)
 http_module (static)
 so_module (static)
 authn_file_module (shared)
 authn_dbm_module (shared)
 authn_dbd_module (shared)
 authn_default_module (shared)
 authn_alias_module (shared)
 authz_host_module (shared)
 authz_groupfile_module (shared)
 authz_user_module (shared)
 authz_dbm_module (shared)
 authz_owner_module (shared)
 authz_default_module (shared)
 auth_basic_module (shared)
 auth_digest_module (shared)
 file_cache_module (shared)
 cache_module (shared)
 mem_cache_module (shared)
 dumpio_module (shared)
 ext_filter_module (shared)
 include_module (shared)
 filter_module (shared)
 substitute_module (shared)
 deflate_module (shared)
 log_config_module (shared)
 log_forensic_module (shared)
 logio_module (shared)
 env_module (shared)
 mime_magic_module (shared)
 cern_meta_module (shared)
 expires_module (shared)
 headers_module (shared)
 ident_module (shared)
 usertrack_module (shared)
 unique_id_module (shared)
 setenvif_module (shared)
 version_module (shared)
 mime_module (shared)
 status_module (shared)
 asis_module (shared)
 info_module (shared)
 suexec_module (shared)
 cgid_module (shared)
 cgi_module (shared)
 vhost_alias_module (shared)
 negotiation_module (shared)
 dir_module (shared)
 actions_module (shared)
 speling_module (shared)
 alias_module (shared)
 rewrite_module (shared)
 limitipconn_module (shared)
 php5_module (shared)
Syntax OK

その他の設定値。

  • (例)MIMEタイプがオーディオファイル及びビデオファイルは制限する。
OnlyIPLimit audio/* video/*
  • (例)MIMEタイプがオーディオファイル及びビデオファイル以外は制限する。
NoIPLimit audio/* video/*

ちなみにテストで同時に大量のコネクションを張ると若干さばききれないようだ。
しかしある程度は効果があると思う。