danny 2007-1-29 15:45
使用 mod_limitipconn 控制單一 ip 連線到 apache 的數量
目的: 在已架設網站的 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> [/code]
更多的 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://www.adj.idv.tw/phpBB2/viewtopic.php?t=2127