前置条件:nginx需要有ngx_http_limit_conn_module和ngx_http_limit_req_module模块,可以使用命令2>&1nginx-v|tr'''
'|greplimit检查有没有相应模块,如果没有请重新编译安装这两个模块。
}
使用$binary_remote_addr变量作为参数的时候,是基于ip地址的限制,同样可以使用$server_name变量进行给定服务器连接数的限制:
limit_conn_zone$server_namezone=servers:10m;
limit_req_zone$binary_remote_addrzone=one:10mrate=1r/s;
limit_req_zone$binary_remote_addrzone=one:10mrate=1r/s;

使用如上配置,nginx在/search/路由下将每秒处理不超过1个请求,延迟处理这些请求的方式是总速率不大于设定的速率。nginx将延迟处理此类请求,直到"存储区"(共享存储区one)已满。对于到达完整存储桶的请求,nginx将响应503serviceunavailable错误(当limit_req_status未自定义设定状态码时)。
限制宽带
要限制每个连接的带宽,请使用以下limit_rate指令:
}
通过此设置,客户端将能够通过单个连接以最高50k/秒的速度下载内容。客户端可以打开多个连接跳过此限制。因此,如果目标是阻止下载速度大于指定值,则连接数也应该受到限制。例如,每个ip地址一个连接(如果使用上面指定的共享内存区域):
}
要仅在客户端下载一定数量的数据后施加限制,请使用该limit_rate_after指令。允许客户端快速下载一定数量的数据(例如,文件头-电影索引)并限制下载其余数据的速率(使用户观看电影而不是下载)可能是合理的。
limit_rate20k;
以下示例显示了用于限制连接数和带宽的组合配置。允许的最大连接数设置为每个客户端地址5个连接,这适用于大多数常见情况,因为现代浏览器通常一次最多打开3个连接。同时,提供下载的位置只允许一个连接:
limit_conn_zone$binary_remote_addresszone=addr:10m
本文来源:独立服务器--Nginx如何限制http资源请求(nginx限制访问ip)
本文地址:https://www.idcbaba.com/duli/3759.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 1919100645@qq.com 举报,一经查实,本站将立刻删除。



