规则
限流
IP Rate Limiting规则按客户端地址计数请求。超过限制的地址会被拦截一段时间,这样可以把洪水请求、抓取和密码猜测挡在站点之外。
设置
限流规则只有一个表达式,包含两个数字:
| 字段 | 含义 | 默认值 |
|---|---|---|
| Rate | 一个地址平均每秒可以发送的请求数。允许一次突发最多同样数量的请求。 | 100 |
| Block Duration | 地址超限后被拦截的秒数 | 6000 |
地址被拦截期间,它的每个请求都被拒绝,返回规则的Reason,规则没有填写时返回Rate limit exceeded,状态码为403,除非规则的Status code另有设置;通常选429 Too Many Requests。时间到了之后,这个地址的额度重新回满。
怎么计数
- 按规则计数。一条规则挂在多个站点上时,每个地址在所有这些站点上共用一份额度;要分开计数,就给每个站点各建一条规则。
- 计数保存在每个网关进程的内存里。CasWAF重启后从头计数;有多个节点时,每个节点各自计数。
- 只有到达这条规则的请求才计数。被前面的
Allow规则放行的请求,或者被前面的规则拦下的请求,都不计数。
怎么选数字
- 对整个站点,先设得高一些,例如每秒
20个、拦截600秒,然后一边看仪表盘一边往下调。 - 加载一个页面可能同时拉取几十个文件。如果站点的静态文件也经过CasWAF,要为这种突发留出余量。
- 同一个公司或学校网络后面的访客共用一个地址。在限流规则之前用
IP规则放行已知的网络。 - CasWAF放在负载均衡或CDN后面时,要确保它看到的是真实的客户端地址,否则所有访客都会被算成同一个。见代理后面的客户端IP。