详解nginx的请求限制(连接限制和请求限制)

2019-10-17 17:29:58王冬梅

limit_req_status
语法: limit_req_status code;
默认值: limit_req_status 503;
配置段: http, server, location

该指令在1.3.15版本引入。设置拒绝请求的响应状态码。

limit_req
语法: limit_req zone=name [burst=number] [nodelay];
默认值: —
配置段: http, server, location

设置对应的共享内存限制域和允许被处理的最大请求数阈值。 如果请求的频率超过了限制域配置的值,请求处理会被延迟,所以所有的请求都是以定义的频率被处理的。 超过频率限制的请求会被延迟,直到被延迟的请求数超过了定义的阈值,这时,这个请求会被终止,并返回503 (Service Temporarily Unavailable) 错误。这个阈值的默认值为0。如:

limit_req_zone $binary_remote_addr zone=creq:10 mrate=1r/s;
server{
 location /www.baidu.com/{
  limit_req zone=creq burst=5;
 }
}

限制平均每秒不超过一个请求,同时允许超过频率限制的请求数不多于5个。

如果不希望超过的请求被延迟,可以用nodelay参数,如:

limit_req zone=ttlsa_com burst=5 nodelay;

完整实例配置

http{
 limit_req_zone $binary_remote_addr zone=creq:10m rate=1r/s;
 server{
  location ^~/download/{ 
  limit_req zone=creq burst=5;
  data/www.baidu.com/download/;
  }
 }
}

可能要对某些IP不做限制,需要使用到白名单。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易采站长站。