如何为同一ALB下不同主机名配置独立AWS WAF速率限制规则
ALB多主机名差异化速率限制配置指引
核心逻辑很简单:你现在已经给ALB关联了WAF做限流,不用额外拆ALB、不用改域名解析,直接利用WAF规则的Host头匹配能力,给不同域名建独立的限流规则,调整好优先级就行。
前置检查
- 确认所有待配置的子域名(
aaa-foo.dev.com、bbb-foo.dev.com等)都已经解析到同一个ALB,且ALB的HTTPS/HTTP监听已经配置了对应证书、转发规则能正常转发这些域名的流量 - 确认ALB已经关联了AWS WAF WebACL,你之前给
foo.dev.com配的5分钟300次限流规则就在这个ACL里
具体配置步骤
1. 调整原有通用规则的匹配范围
找到你之前给foo.dev.com建的限流规则,在匹配条件里加排除项:当请求Host头为aaa-foo.dev.com、bbb-foo.dev.com这些需要单独限流的域名时,不触发这条通用规则。
关键注意点:WAF规则是按优先级从高到低(数值越小优先级越高)执行的,一旦请求匹配到高优先级规则并执行了阻断/放行动作,就不会再匹配后面的低优先级规则,所以独立域名的限流规则优先级一定要比通用规则高。
2. 逐域名创建独立限流规则
对每个需要单独设阈值的主机名,新建独立的速率限制规则:
- 规则类型选速率限制规则,统计窗口保持和现有规则一致的5分钟
- 匹配条件新增一条:请求
Host头精确匹配对应域名,比如给aaa-foo.dev.com建的规则就只匹配Host等于这个域名的请求,阈值填100;给bbb-foo.dev.com建的规则同理,阈值填200 - 统计维度默认选源IP即可,会按每个访问源IP单独计数,符合常规限流逻辑;如果你们需要按API密钥、客户端标识这类维度限流,把对应请求头加到统计键里就行
- 刚上线的时候建议先把规则动作设为
Count(仅计数不阻断),跑1-2天看WAF日志里的触发量,确认阈值符合业务实际流量后再改成Block,避免误拦正常请求
3. 规则优先级排序
按优先级从高到低排列规则即可:
- 最高优先级:所有单域名专属限流规则,这些规则的Host匹配是互斥的,互相之间优先级高低不影响效果
- 次高优先级:调整过匹配范围的
foo.dev.com通用限流规则 - 最低优先级:WAF托管规则集、默认放行规则等其他配置
后续维护提示
- 后续新增同ALB下的客户端子域名时,直接新建对应Host匹配的限流规则,插到通用规则前面即可,不用改动现有配置
- 不建议为了省事用Host通配符匹配做差异化限流,很容易出现匹配范围溢出,把不相关域名的请求算到同一个限流池里,域名数量不多的情况下用精确匹配最稳妥
- 所有限流配置都在WAF层操作,不要改ALB的监听转发规则,不会影响现有业务流量转发
内容的提问来源于stack exchange,提问作者Vese
相关产品推荐
相关产品推荐

