发布时间: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不做限制,需要使用到白名单。名单设置参见后续的文档,我会整理一份以供读者参考。请专注。
2020-07-06
小新Air13Pro一键恢复操作指导(PBR版)
Linux查看网卡实时流量软件
旭日N220系列笔记本当外接USB鼠标时触控板如何自动禁用?
预装Win10创建恢复介质
centos 7 yum安装配置apache 2.4
Win10 RS2(1703)应用闪退、异常的处理方法
Y530,V550Windows 7系统下遥控器驱动如何确认安装正确。
Linux date显示或设定系统的日期与时间命令详解
《第五人格》日本市场大热,游戏出海成网易最大亮点