limit_req_zone定义在http块中,$binary_remote_addr表示保存客户端IP地址的二进制形式。
Zone定义IP状态及URL访问频率的共享内存区域。zone=keyword标识区域的名字,以及冒号后面跟区域大小。16000个IP地址的状态信息约1MB,所以示例中区域可以存储160000个IP地址。
3Rate定义最大请求速率。示例中速率不能超过每秒10个请求。
http {
limit_req_zone $host $document_uri zone=per_server_req_limit:10m rate=300r/s; #同server每秒访问300次
...
server {
...
location / {
limit_req zone=per_server_req_limit forbid_action=/limit-no.html;
add_header Web-Tag"$document_uri+$binary_remote_addr+$remote_addr";
#echo "yes";
break;
}
location = /limit-no.html {
#echo "no";
break;
}
#请求白名单会跳过limit
limit_req_whitelist geo_var_name=white_ip geo_var_value=1;
geo $white_ip {
ranges;
default 0;
127.0.0.1-127.0.0.255 1;
}
本文详细介绍了Nginx的limit_req_zone指令用于限制HTTP请求速率的方法,通过实例展示了如何设置共享内存区域来跟踪IP地址及其访问频率,以及如何为特定服务器或URL设置最大请求速率。同时,文章还讲解了如何使用limit_req_whitelist进行请求白名单的配置。
748

被折叠的 条评论
为什么被折叠?



