结论:限流分连接数和请求速率两层做,先限 IP 再限接口。

①Nginx 用 limit_req_zone 按 IP 限速:定义每秒请求数,比如 10r/s,burst 设 20,超出返回 503,能挡住大部分脚本刷量。

②再用 limit_conn_zone 限并发连接:单 IP 并发连接数控制在 20 以内,防止一个 IP 占满连接池。

③敏感接口单独加严:登录、搜索、短信接口单独配更低的速率,并加验证码,这些是被刷的重灾区。

④配合封禁和监控:用 fail2ban 自动封高频 IP,同时看日志确认限流没误伤正常用户和蜘蛛,阈值要按实际访问曲线调,别照抄别人的数字。