本文主要解析一下ngx_http_core_module、ngx_http_limit_conn_module以及ngx_http_limit_req_module中的limit相关配置参数。
limit_rate
名称
默认配置
作用域
官方说明
中文解读
模块
limit_rate
limit_rate0;
http,server,location,ifinlocation
Limitstherateofresponsetransmissiontoaclient.Therateisspecifiedinbytespersecond.Thezerovaluedisablesratelimiting.Thelimitissetperarequest,andsoifaclientsimultaneouslyopenstwoconnections,theoverallratewillbetwiceasmuchasthespecifiedlimit.
指定每秒该连接能下载的bytes,主要用来限制个别请求的带宽
ngx_http_core_module
limit_rate_after
limit_rate_after0;
http,server,location,ifinlocation
Setstheinitialamountafterwhichthefurthertransmissionofaresponsetoaclientwillberatelimited.
设置多少bytes过后将启动limit计数,如果小于此值则不限速
ngx_http_core_module
limit_except
没有默认值
location
LimitsallowedHTTPmethodsinsidealocation.Themethodparametercanbeoneofthefollowing:GET,HEAD,POST,PUT,DELETE,MKCOL,COPY,MOVE,OPTIONS,PROPFIND,PROPPATCH,LOCK,UNLOCK,orPATCH.AllowingtheGETmethodmakestheHEADmethodalsoallowed
设置除了指定的httpmethods外其他method将被限制,允许GET就自动允许HEAD方法
ngx_http_core_module
实例
location/downloads{
limit_rate_after1m;
limit_rate500k;
}
location/{
proxy_passhttp://localhost:3000;
limit_exceptGET{
denyall;
}
}
limit_conn
名称
默认配置
作用域
官方说明
中文解读
模块
limit_conn
没有默认值,语法limit_connzonenumber;
http,server,location
Setsthesharedmemoryzoneandthemaximumallowednumberofconnectionsforagivenkeyvalue.Whenthislimitisexceeded,theserverwillreturntheerrorinreplytoarequest.
指定一个zone的每个key最大连接数
ngx_http_limit_conn_module
limit_conn_zone
没有默认值,语法limit_conn_zonekeyzone=name:size;
http
Setsparametersforasharedmemoryzonethatwillkeepstatesforvariouskeys.Inparticular,thestateincludesthecurrentnumberofconnections.Thekeycancontaintext,variables,andtheircombination.Requestswithanemptykeyvaluearenotaccounted.
第一个参数是key,第二个参数是指定zone及其存放元数据(key,currentnumofconnsperkey,zonesize)的共享内存大小
ngx_http_limit_conn_module
limit_conn_log_level
limit_conn_log_levelerror;
http,server,location
Setsthedesiredlogginglevelforcaseswhentheserverlimitsthenumberofconnections.Thisdirectiveappearedinversion0.8.18.
指定当触发limit的时候日志打印级别
ngx_http_limit_conn_module
实例
http{
limit_conn_zone$binary_remote_addrzone=ips:10m;
limit_conn_zone$server_namezone=servers:10m;
limit_conn_log_levelnotice;
server{
#theselimitsapplytothewholevirtualserver
limit_connips10;
#only1000simultaneousconnectionstothesameserver_name
limit_connservers1000;
}
}
limit_req
名称
默认配置
作用域
官方说明
中文解读
模块
limit_req
没有默认值,语法limit_reqzone=name[burst=number][nodelay];
http,server,location
Setsthesharedmemoryzoneandthemaximumburstsizeofrequests.Iftherequestsrateexceedstherateconfiguredforazone,theirprocessingisdelayedsuchthatrequestsareprocessedatadefinedrate.Excessiverequestsaredelayeduntiltheirnumberexceedsthemaximumburstsizeinwhichcasetherequestisterminatedwithanerror.
指定zone的burst大小
ngx_http_limit_req_module
limit_req_zone
没有默认值,语法limit_req_zonekeyzone=name:sizerate=rate;
http
Setsparametersforasharedmemoryzonethatwillkeepstatesforvariouskeys.Inparticular,thestatestoresthecurrentnumberofexcessiverequests.Thekeycancontaintext,variables,andtheircombination.Requestswithanemptykeyvaluearenotaccounted.
第一个参数指定key,第二个参数指定zone名称和元数据的内存大小,第三个参数rate指定单位时间的请求数阈值
ngx_http_limit_req_module
limit_req_log_level
limit_req_log_levelerror;
http,server,location
Setsthedesiredlogginglevelforcaseswhentheserverrefusestoprocessrequestsduetorateexceeding,ordelaysrequestprocessing.Logginglevelfordelaysisonepointlessthanforrefusals.
指定触发reqlimit时打印的日志级别
ngx_http_limit_req_module
实例
http{
limit_req_zone$binary_remote_addrzone=myreqzone:10m
limit_req_log_levelwarn;
server{
##每个ip限定10个连接数
##正常一个浏览器给每个host开两到三个连接
##触发的话会返回503
##nodelay表示一上来就直接计算,不经过一些预热后再计算
limit_reqzone=myreqzoneburst=10nodelay;
}
}
以上就是我们整理的nginx中limit配置参数的全部内容,大家可以在下方的留言区讨论,感谢你对毛票票的支持。