结论:限流要分层做,Nginx 挡第一道,应用层再兜底,单靠一层很容易被绕过。

① Nginx 层用 limit_req_zone 按 IP 限速,比如登录、注册、搜索这类接口设 5r/s,突发允许 10,普通页面放宽到 20r/s,配置写在 server 块里对特定 location 生效。

② 对恶意 IP 用 limit_conn 限制并发连接数,配合 fail2ban 扫描 Nginx 日志,短时间内大量 403、404 的直接封 IP 一段时间,效果立竿见影。

③ 应用层在 GJ 论坛的入口文件或中间件里加一层基于 Redis 的计数器,按用户 ID 和 IP 双维度限流,防止有人换 IP 继续刷,登录失败次数也要计数锁定。

④ 注意别把 CDN 回源 IP 和搜索引擎爬虫误封,配置白名单,限流阈值上线前先观察几天访问日志,按真实峰值再定,拍脑袋设数值容易误伤正常用户。