尽情发挥:规则中的通配符支持及全新开源通配符库
内容提要
Cloudflare推出了对规则引擎的通配符支持,用户可以通过简单配置实现动态URL匹配和重定向。新功能包括“通配符”和“严格通配符”操作符,简化了URL重定向过程,提升了性能,增强了平台的灵活性和用户体验。
延伸解读
从 Page Rules 到 Ruleset Engine:通配符的回归与升级
文章回顾了 2012 年 Page Rules 的通配符能力,以及 2022 年 Single Redirects 为追求性能而牺牲了通配符的易用性。如今通配符支持被重新引入 Ruleset Engine,覆盖缓存、压缩、配置、源站、重定向、WAF 等十余种产品。这不仅是功能补全,更意味着用户可以在高性能规则引擎上继续使用熟悉的通配符语法,无需再为简单重定向编写嵌套函数。
两种操作符:大小写敏感与不敏感的选择
新增的“wildcard”操作符不区分大小写,行为类似 Page Rules;“strict wildcard”则严格区分大小写。两者均可应用于 URI、主机名、请求头、Cookie、User-Agent、国家等任意字符串字段。用户需根据场景选择:例如匹配 User-Agent 时通常不区分大小写,而某些路径或令牌可能要求精确匹配。选错操作符可能导致规则意外命中或漏匹配。
wildcard_replace() 与简化 UI:降低重定向门槛
在 Single Redirects 中,wildcard_replace() 函数允许在重定向目标中引用捕获的段,例如将 https://example.com/*/t*st 重定向到 https://${1}.example.com/t${2}st。同时,控制台新增“wildcard pattern”界面,用户无需编写函数即可指定请求和目标 URL 的通配符模式。这为不熟悉正则或嵌套函数的用户提供了类似 Page Rules 的直观体验,但复杂逻辑仍可回退到函数方式。
自研 Rust 通配符库:性能与安全的权衡
由于现有 regex 和 wildmatch 库无法同时满足字节级匹配、转义序列和捕获替换等需求,Cloudflare 基于 Kurt 2016 算法并借鉴 Krauss 2014 优化,自研了开源 Rust 通配符库。该实现将模式中星号数量限制为最多 8 个,以控制最坏情况下的二次时间复杂度,防止恶意复杂模式消耗 CPU。这一设计在灵活性与性能安全之间取得了平衡,并已开源供社区贡献。
Q&A
Cloudflare的通配符支持有什么新功能?
Cloudflare的通配符支持新增了'通配符'和'严格通配符'操作符,简化了URL重定向过程,并引入了wildcard_replace()函数以动态使用匹配的段。
如何使用通配符进行URL重定向?
用户可以通过指定带有星号(*)的URL模式来实现动态重定向,例如使用wildcard_replace()函数将https://example.com/*/t*st重定向到https://${1}.example.com/t${2}st。
通配符匹配的工作原理是什么?
通配符匹配允许用户在字符串中使用星号(*)来匹配特定模式,捕获的段可以通过${<X>}语法在其他表达式中引用。
Cloudflare的通配符功能对用户收费吗?
Cloudflare的通配符功能对所有计划用户免费提供,无需注册测试访问。
通配符支持如何提升用户体验?
通配符支持简化了URL重定向过程,提升了灵活性和性能,使用户能够更轻松地管理复杂的URL模式。
Cloudflare的通配符库是开源的吗?
是的,Cloudflare的通配符库是开源的,用户可以访问源代码并参与开发。