字體:  

使用 mod_limitipconn 控制單一 ip 連線到 apache 的數量

adj 發表於: 2007-11-29 21:54 來源: ADJ網路控股集團


目的: 在已架設網站的 Apache HTTP Server 升級版本, 並加入 mod_limitipconn (限制同一 IP 最大 Connection 數量) 模組

1) 使用mod_limitipconn限制Apache的並發連接數
mod_limitipconn可以控制每個IP位址同時連接伺服器某一個目錄的並發連接數,是一個非常有用的模組
官方網址︰ http://dominia.org/djao/limitipconn.html

環境: Fedora Core 1 httpd 2.0.47 → 2.0.55

下載並解包相關 Source Tar Ball

cd /usr/local/src
wget http://apache.cdpa.nsysu.edu.tw/httpd/httpd-2.0.55.tar.bz2
wget http://dominia.org/djao/limit/mod_limitipconn-0.22.tar.gz
tar jxf httpd-2.0.55.tar.bz2
tar zxf mod_limitipconn-0.22.tar.gz

安裝 Apache HTTP Server 2.0.55

cd httpd-2.0.55
patch -p1 < ../mod_limitipconn-0.22/apachesrc.diff
./buildconf
./configure --prefix=/usr/local/apache2
make
make install

安裝 mod_limitipconn 模組

cd ../mod_limitipconn-0.22
vi Makefile

APXS=/usr/local/apache2/bin/apxs
APACHECTL=/usr/local/apache2/bin/apachectl

make
make install

調整環境, 修改新的 httpd.conf

cd /usr/local/apache2
rmdir logs
ln -s /var/log/httpd logs 繼續使用原來存放 log 的地方 (/var/log/httpd)
ln -s /var/run 讓 httpd.pid 一樣置於 /var/run (for logrotate)

cp /usr/lib/httpd/modules/* ./modules 將原先的 module 複製過來

cd conf
mv ssl.conf ssl.conf.bak
ln -s /etc/httpd/conf.d/ssl.conf
vi ssl.conf

#LoadModule ssl_module... 待會在 httpd.conf 加入 LoadModule ssl_module, 所以這邊註解掉

vi httpd.conf 調整相關設定, 以符合原本的網站環境

修改:

User nobody --> apache
Group #-1 --> apache

PidFile logs/httpd.pid --> run

DocumentRoot "/usr/local/apache2/htdocs" --> "/var/www/html"
<Directory "/usr/local/apache2/htdocs"> --> "/var/www/html"
ServerTokens Full --> Prod
ServerSignature On --> Off 修改以上這兩行是為了隱藏伺服器資訊
ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/" --> "/var/www/cgi-bin/"
<Directory "/usr/local/apache2/cgi-bin"> --> "/var/www/cgi-bin"

新增:

LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule ssl_module modules/mod_ssl.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule php4_module modules/libphp4.so 視需求載入相關模組

AddType application/x-httpd-php .php 要能執行 php 網頁, 除載入模組外, 記得加上這行
<IfModule mod_dav_fs.c>
DAVLockDB /var/lib/dav/lockdb 想使用 WebDAV 一定要加上這行
</IfModule>

CODE:

LoadModule limitipconn_module modules/mod_limitipconn.so
#ExtendedStatus On --> ExtendedStatus On 取消此行註解才能使用 limitipconn 模組
<IfModule mod_limitipconn.c>
  <Location />
    MaxConnPerIP 20
    NoIPLimit image/* text/css application/x-javascript
  </Location>
</IfModule>
更多的 mod_limitipconn 設置參考

停止原 HTTP Server 運作, 啟動新安裝之 HTTP Server

/etc/init.d/httpd stop
/usr/local/apache2/bin/apachectl -f /usr/local/apache2/conf/httpd.conf -k start

開機時, 自動啟動新安裝之 HTTP Server

chkconfig httpd stop
vi /etc/rc.d/rc.local

/usr/local/apache2/bin/apachectl -f /usr/local/apache2/conf/httpd.conf -k start


參考文章:
http://cha.homeip.net/blog/archives/2006/04/httpd_limitipco.html