网上用nginx限制Ip的并发数,每个ip的带宽这样的教程贼多,而且都是抄来抄去,很烦。都没有我要的只对某个ip限制他的下载速度,也可能是我的需求比较奇葩不常见吧。下面我就教你一步步怎么弄吧
-
去git上把 Nginx-limit-traffic-rate-module这个模块下载来 地址:https://github.com/bigplum/Nginx-limit-traffic-rate-module 解压出来把Nginx-limit-traffic-rate-module-master文件夹拷贝到/usr/local/src/
-
查看自己nginx的配置信息
# nginx -V
nginx version: nginx/1.8.0
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-11) (GCC)
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --with-http_ssl_module --with-http_sub_module --with-http_gzip_static_module --with-http_stub_status_module --add-module=/data/software/ngx_http_substitutions_filter_module
- 加入Nginx-limit-traffic-rate-module这个模块
# ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_sub_module --with-http_gzip_static_module --with-http_stub_status_module --add-module=/data/software/ngx_http_substitutions_filter_module --add-module=/usr/local/src/Nginx-limit-traffic-rate-module-master
# make //千万不要make install,不然就真的覆盖了
- 替换nginx二进制文件
# cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
# cp ./objs/nginx /usr/local/nginx/sbin/
- 配置nginx.conf
http {
#gzip on;
geo $whiteiplist {
default 1;
172.16.1.88 0;
172.16.1.138 0;
}
map $whiteiplist $limit {
1 "";
0 $binary_remote_addr;
}
limit_traffic_rate_zone rate $limit 32m;
server {
listen 8888;
server_name localhost;
location ~ .*\.(gif|jpg|jpeg|png|mp4|flv|rmvb|avi|bmp|swf|txt|pdf|mp3){
limit_traffic_rate rate 100k;
}
}
}
172.16.1.88 和172.16.1.138就是被限制的ip,limit_traffic_rate rate 100k表示限制速率为100k
参考白名单设置:http://www.ttlsa.com/nginx/nginx-speed-white-list-configuration/