Nginx 限流 (limit_req) 一直配不好,要么限不住,要么误伤正常用户。
基础配置:
limit_req_zone $binary_remote_addr zone=api:10m rate=10r/s;
location /api {
limit_req zone=api burst=20 nodelay;
proxy_pass http://app;
}
rate=10r/s 是平均速率,burst=20 允许瞬时 20 个排队,nodelay 让排队的不延迟直接放行。
调参心得:
- 看接口真实容量,留 30% 余量。
- 区分接口粒度(登录、搜索、读、写分开限)。
- 配合
limit_req_status 429返回标准状态码。
大家限流都怎么设?