1,配置nginx.conf
代碼如下
http{
.............
limit_zone one $binary_remote_addr 10m; //我記得默認配置就有,只不過是注釋掉了,如果沒有加一下
..............
server{
.................
location {
.........
limit_conn one 20; //連接數限制
limit_rate 500k; //帶寬限制
........
}
.................
}
.............
}
[root@localhost nginx]# /etc/init.d/nginx reload //重新加載
2,測試限制ip連接數
代碼如下
[root@localhost nginx]# webbench -c 100 -t 2 http://127.0.0.1/index.php
Webbench - Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.
Benchmarking: GET http://127.0.0.1/index.php
100 clients, running 2 sec.
Speed=429959 pages/min, 2758544 bytes/sec.
Requests: 14332 susceed, 0 failed.
[root@localhost nginx]# cat /var/log/nginx/access.log|grep 503 |more //這樣的數據有很多,最好加個more或者less
127.0.0.1 - - [25/Apr/2012:17:52:21 +0800] "GET /index.php HTTP/1.0" 503 213 "-" "WebBench 1.5" -
127.0.0.1 - - [25/Apr/2012:17:52:21 +0800] "GET /index.php HTTP/1.0" 503 213 "-" "WebBench 1.5" -
127.0.0.1 - - [25/Apr/2012:17:52:21 +0800] "GET /index.php HTTP/1.0" 503 213 "-" "WebBench 1.5" -
127.0.0.1 - - [25/Apr/2012:17:52:21 +0800] "GET /index.php HTTP/1.0" 503 213 "-" "WebBench 1.5" -
127.0.0.1 - - [25/Apr/2012:17:52:21 +0800] "GET /index.php HTTP/1.0" 503 213 "-" "WebBench 1.5" -
127.0.0.1 - - [25/Apr/2012:17:52:21 +0800] "GET /index.php HTTP/1.0" 503 213 "-" "WebBench 1.5" -
127.0.0.1 - - [25/Apr/2012:17:52:21 +0800] "GET /index.php HTTP/1.0" 503 213 "-" "WebBench 1.5" -
127.0.0.1 - - [25/Apr/2012:17:52:21 +0800] "GET /index.php HTTP/1.0" 503 213 "-" "WebBench 1.5" -
..............................................................................................
通過以上測試,可以得出限制ip連接數是沒有問題的,但是限制帶寬看不出來,說實話這個不好測試,所以就沒測試了
利用apache限制IP並發數和下載流量控制
安裝mod_limitipconn限制IP連接數
1,下載地址:http://dominia.org/djao/limitipconn2.html
2,安裝:[root@BlackGhost mod_limitipconn-0.22]# /usr/local/apache2/bin/apxs -c -i mod_limitipconn.c
3,配置如下vi httpd.conf
代碼如下
ExtendedStatus On
LoadModule limitipconn_module modules/mod_limitipconn.so
<IfModule mod_limitipconn.c>
<Location /> #對應根目錄
MaxConnPerIP 6 #最大並發數
NoIPLimit image/* #對圖片不做限制
</Location>
<Location /download> #對根目錄下面的download
MaxConnPerIP 1 #最大並發數為1
</Location>
</IfModule>
說明:解壓mod_limitipconn-0.22.tar.gz後,文件裡面有一個README裡面有配置的拿出來,根據自己的需要改一改就行了,如果真的不會,可以上網上查,像apache用的人這麼多,我想你的問題別人也遇到過,一查肯定能查到。如果你想放到虛擬主機進行最大並發數控制,可以修改extra/httpd-vhost.conf把<IfModule mod_limitipconn.c>這個東西copy到<Virtualhost>中就可以了
三,安裝mod_bandwidth
mod_bandwidth可以對IP的並發數進行控制,也可以對下載流量進行控制,也可以對某個目錄的流量進行控制。
1,下載地址:http://bwmod.sourceforge.net/
2,安裝:[root@BlackGhost mod_bw]# /usr/local/apache2/bin/apxs -c -i mod_bw.c
3,配置如下vi httpd.conf 加上LoadModule bw_module modules/mod_bw.so
然後打開vi httpd-vhosts.conf
代碼如下
listen 10004
NameVirtualHost *:10004
<VirtualHost *:10004>
DocumentRoot "/home/zhangy/www/test"
ServerName *:10004
BandwidthModule On
ForceBandWidthModule On
Bandwidth all 1024000
MinBandwidth all 50000
LargeFileLimit * 500 50000
MaxConnection all 6
ErrorLog "/home/zhangy/apache/www.test.com-error.log"
CustomLog "/home/zhangy/apache/www.test.com-error.log" common
</VirtualHost>
解壓bandwidth的壓縮文件後,裡面有一個mod_bw.txt有詳細的說明和實例,下面是部分參數說明:
1,BandWidth localhost 0 #對localhost不限速
2,BandWidth 192.168.1.5 102400 #對192.168.1.5限速為100KB
3,BandWidth “u:^Mozilla(.*)” 10240 #用mozilla時限速10KB
4,BandWidth “u:wget” 102400 #如果用wget下載時限速10KB
5,MinBandWidth all -1 #保證每個客戶端最高速度可達10KB
6,LargeFileLimit .jpg 100 10240 #jpg文件超過100KB,限速10KB
7,#下面的510挺好,如果不設置,apache自己會報錯,就根報404差不多,頁面非常的丑
ErrorDocument 510 /exceed_speed.html
BandWidthError 510
8,MaxConnection all 10 #所有ip最大連接數為10
9,MaxConnection 192.168.1.5 5 #192.168.1.5最大連接數為5