【转载请注明出处】:https://cloud.tencent.com/developer/article/1626336
ngx_http_limit_req_module模块是Nginx提供的基于漏桶算法实现的请求限流模块,用于对指定KEY对应的请求进行限流,比如按照IP维度限制请求速率。ngx_http_limit_req_module官方文档
http {
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
limit_conn_log_level error;
limit_conn_status 503;
...
server {
...
location /limit {
limit_req zone=one burst=5 nodelay;
}
定义IP维度的限流区域:
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
limit_conn_log_level info;
limit_conn_status 503;
server {
listen 8000;
server_name localhost;
location /limit {
limit_req zone=one burst=5 nodelay;
proxy_pass http://127.0.0.1:8081;
}
}
每秒1个请求,桶容量为5,如果桶满了直接拒绝新请求,且每秒最多1个请求,桶按照固定1秒的速率以nodelay模式处理请求。
使用AB测试工具进行测试,并发数为5个,总的请求数为30个:
ab -n 30 -c 5 http://127.0.0.1:8000/limit/test
查看nginx access.log:
也可以按照server维度进行限制。
【转载请注明出处】: https://cloud.tencent.com/developer/article/1626336
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。