一、限制并发连接数的配置方法如下:
1、在nginx.conf里的http{}里加上如下代码:
# vim /usr/local/nginx/conf/nginx.conf
#在其中的36行加入下面的内容(在http{}模块中加入的)
limit_conn_zone $binary_remote_addr zone=addr:10m;
#解释内容如下:
要限制连接,必须先有一个容器对连接进行计数,在http段加入如下代码:
"zone=" 给它一个名字,可以随便叫,这个名字要跟下面的 limit_conn 一致
$binary_remote_addr = 用二进制来储存客户端的地址,1m 可以储存 32000 个并发会话。 $binary_remote_addr是限制同一客户端ip地址;
2、在需要限制并发数的网站配置server{}里加上如下代码:
vim /usr/local/nginx/conf/nginx.conf
#在其中的49-51行加入下面的location模块(在server{}模块中加入的)
location /download/ {
#结合配置文件中server{}中的定义,我们可以知道,该location模块表示:在访问http://localhost/download/...内容(或者http://172.25.83.1/...内容)时,进行并发数为1的限制
limit_conn addr 1;
#限制每个IP只能发起1个连接(addr 要跟 limit_conn_zone 的变量对应)
}
#参数解释:
limit_conn为限制并发连接数;
3、修改完配置文件nginx.conf之后,重新加载nginx服务
# /usr/local/nginx/sbin/nginx -t
# /usr/local/nginx/sbin/nginx -s reload
二、限制下载速率的配置方法如下:
# vim /usr/local/nginx/conf/nginx.conf
#在下面的location模块中加入第53行的内容
location /download/ {
limit_conn addr 1;
limit_rate 50k;
#是对每个连接限速50k。这里是对连接限速,而不是对IP限速!如果一个IP允许两个并发连接,那么这个IP就是限速limit_rate * 2
}
2、修改完配置文件nginx.conf之后,重新加载nginx服务
# /usr/local/nginx/sbin/nginx -t
# /usr/local/nginx/sbin/nginx -s reload
附:
#ip limit
limit_conn_zone $binary_remote_addr zone=perip:10m;
limit_conn_zone $server_name zone=perserver:10m;
limit_conn perip 2;
limit_conn perserver 20;
limit_rate 100k;
nginx:对连接做限制的limit_conn模块
ngx_http_limit_conn_module模块
生效阶段:NGX_HTTP_PREACCESS_PHASE阶段
模块:http_limit_conn_module
默认编译进nginx,通过--without-http_limit_conn_module来禁用
生效范围:
(1)全部worker进程
(2) 进入preaccess阶段前不生效
(3)限制的有效性依赖于key的设计:依赖postread阶段的realip模块取得真实ip
1.limit_conn_zone 指令
limit_conn_zone key zone = name : size; (定义共享内存大小以及可以关键字)
放置位置:http
2.limit_conn指令
limit_conn zone number (zone为共享内存,number为并发连接数)
放置位置:http,server,location
3.limit_conn_log_level指令(限制发生时的日志级别)
limit_conn_log_level info|notice|warn|error
默认limit_conn_log_level error
放置位置:http,server,location
4.limit_conn_status 指令(限制发生时向客户端返回的错误码)
limit_conn_status code
默认:limit_conn_status 503
放置位置:http,server,location