2020-06-06 20:56:39
在《Nginx使用limit_rate limit_conn限制文件下载速度》我们说到了ngx_http_limit_conn_module 模块,来限制连接数。那么请求数的限制该怎么做呢?这就需要通过ngx_http_limit_req_module 模块来实现,该模块可以通过定义的 键值来限制请求处理的频率。特别的,可以限制来自单个IP地址的请求处理频率。 限制的方法如同漏斗,每秒固定处理请求数,推迟过多请求。
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
说明:区域名称为one,大小为10m,平均处理的请求频率不能超过每秒一次。
键值是客户端IP。
使用$binary_remote_addr变量, 可以将每条状态记录的大小减少到64个字节,这样1M的内存可以保存大约1万6千个64字节的记录。
如果限制域的存储空间耗尽了,对于后续所有请求,服务器都会返回 503 (Service Temporarily Unavailable)错误。
速度可以设置为每秒处理请求数和每分钟处理请求数,其值必须是整数,所以如果你需要指定每秒处理少于1个的请求,2秒处理一个请求,可以使用 “30r/m”。
limit_req_zone $binary_remote_addr zone=ttlsa_com:10m rate=1r/s;
server {
location /www.ttlsa.com/ {
limit_req zone=ttlsa_com burst=5;
}
}
限制平均每秒不超过一个请求,同时允许超过频率限制的请求数不多于5个。
如果不希望超过的请求被延迟,可以用nodelay参数,如:
limit_req zone=ttlsa_com burst=5 nodelay;
http {
limit_req_zone $binary_remote_addr zone=ttlsa_com:10m rate=1r/s;
server {
location ^~ /download/ {
limit_req zone=ttlsa_com burst=5;
alias /data/www.ttlsa.com/download/;
}
}
}
可能要对某些IP不做限制,需要使用到白名单。名单设置参见后续的文档,我会整理一份以供读者参考。请专注。
使用nginx limit requests模块限制单个IP请求速率
03-09
nginx ngx_http_limit_conn ngx_http_limit_conn模块(请求限制和连接数限制)使用指南
03-20
nginx使用limit_rate limit_conn限制文件下载速度
05-27
nginx编译安装动态模块(不需重新编译nginx)
06-25
centos7安装配置gitlab(使用外部nginx)
06-11
docker部署zabbix监控系统(nginx mysql)
06-28
saltstack快速批量安装nginx
07-16
使用nginx ngx_http_referer_module模块配置防盗链
06-28
使用fpm工具制作nginx的rpm包
06-26
安装并使用python requests发送http请求
07-05
开启nginx的gzip压缩功能,节省流量
05-28
配置haproxy在http请求头添加后端用户真实IP
07-05
Logstash匹配request_time 字段错误解决方法
03-22
最古老的 npm 包 request 已弃用,每周下载量达 1400 万+
05-17
F2014A显示器用户手册
06-28
IdeaPad Y460p&Y560p用户手册
07-12
Lenovo G360用户使用手册
07-16
Linux CentOS 7 重置root用户密码
07-12
Linux userconf用户帐号设置程序命令详解
06-19
Linux w显示目前登入系统的用户信息命令详解
06-06