You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将指定Cloudflare防火墙规则正确转换为可用的HAProxy规则

问题根因

你之前编写的HAProxy规则逻辑和Cloudflare规则完全不匹配:

  • Cloudflare规则中的any(len(http.request.headers.values[*])[*] gt 60)是判断是否存在任意一个请求头的取值长度大于60
  • 你用的hdr_cnt() gt 60/req.fhdr_cnt() gt 60是判断请求头的总数量大于60,二者逻辑完全不一致,这是规则不生效的核心原因。

可用规则参考

简化版(去掉HTTP版本、查询字符串校验)

acl test1 req.hdr_val_len all gt 60
http-request deny if METH_GET test1

完整匹配原Cloudflare规则版本

# 匹配请求方法为GET
acl is_get METH_GET
# 匹配查询字符串为空
acl query_empty query len 0
# 匹配HTTP版本为1.1
acl http_11 req.ver eq 1.1
# 匹配任意请求头值长度大于60
acl header_val_too_long req.hdr_val_len all gt 60
# 所有条件满足则拒绝请求
http-request deny if is_get query_empty http_11 header_val_too_long

注意事项

  • 上述配置适配HAProxy 2.0及以上版本,req.hdr_val_len为2.0版本新增的采样方法
  • 规则需要放置在frontend或listen块的http-request配置段靠前位置,避免被其他前置规则放行导致不生效

内容的提问来源于stack exchange,提问作者Amigogeha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 06:45:04