Apache 限制ip并发数,也是说限制同一个ip同时连接服务器的数量
将 Apache 服务器做对同一 IP 的限制连接限制,需要 mod_limitipconn 来实现。一般需要手动编译。不过模块作者也提供了一些编译好的模块,根据自己的 Apache 版本可以直接使用。
wget http://dominia.org/djao/limit/mod_limitipconn-0.24.tar.bz2 tar xf mod_limitipconn-0.24.tar.bz2 cd mod_limitipconn-0.24apxs -c -i -a mod_limitipconn.c
注意: 上面代码中的apxs是一个命令,你没有配置的话,他们执行不了,需要你找到这个文件所在的路径然后将 apxs 替换成 /www/server/apache/bin/apxs -c -i -a mod_limitipconn.c,那我自己的服务器举例子,apxs文件在apache的bin目录下寻找。
注意:该步会自动将mod_limitipconn.so模块编译到apache对应的modules中,还会在http.conf文件中自动添加loadmodules语句
1、确保加载了mod_status模块
2、确保ExtendedStatus On
3、配置
# ExtendedStatus On # LoadModule limitipconn_module /www/server/apache/modules/mod_limitipconn.so <IfModule mod_limitipconn.c> <Location /> # 所有虚拟主机的/目录 MaxConnPerIP 5 # 每IP只允许5个并发连接 NoIPLimit image/* # 对图片不做IP限制 </Location> <Location /mp3> # 所有主机的/mp3目录 MaxConnPerIP 2 # 每IP只允许2个连接请求 OnlyIPLimit audio/mpeg video # 该限制只对视频和音频格式的文件 </Location> </IfModule>
叮嘱2句:上面代码 /www/server/apache/modules/mod_limitipconn.so,这一块一定要确保你已经编译mod_limitipconn模块,在 Apache 配置文件中,你搜一下 一般编译成功都会自动引入,记住哈!!!
上述 Apache 配置亲测有效,下面Nginx为测试,出自于同一个作者手里,应该没问题
这个变量只能在http使用
vi /usr/local/nginx/conf/nginx.conf limit_zone one $binary_remote_addr 10m;
这个变量可以在http, server, location使用
我只限制一个站点,所以添加到server里面
vi /usr/local/nginx/conf/host/gaojinbo.com.conf limit_conn one 10;
killall nginx -HUP
vi /usr/local/nginx/conf/vhosts/down.redocn.com.conf limit_zone one $binary_remote_addr 10m; server { listen 80; server_name down.redocn.com; index index.html index.htm index.php; root /data/www/wwwroot/down; error_page 404 /index.php; # redirect server error pages to the static page /50x.html error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } #Zone limit location / { limit_conn one 1; limit_rate 20k;//限速 } # serve static files location ~ ^/(images|javascript|js|css|flash|media|static)/ { root /data/www/wwwroot/down; expires 30d; } }