Nginx限流配置后为啥没生效?
我用 Nginx 做接口限流,按官方文档配了 limit_req_zone 和 limit_req,但压测时发现请求根本没被限制,还是全部通过了。
我的配置是这样的:
http {
limit_req_zone $binary_remote_addr zone=api_limit:10m rate=1r/s;
server {
listen 80;
location /api/ {
limit_req zone=api_limit burst=3 nodelay;
proxy_pass http://backend;
}
}
}
明明设了每秒 1 个请求,burst 为 3,但用 ab 工具并发 10 个请求打过去,全部返回 200,一个都没被限。是我漏了什么关键配置吗?
limit_req_status是否设置了状态码,默认是 503。你可能没看到限流效果是因为没处理返回码。加上这个:limit_req_status 429; 就这样。