当前位置: 首页 > article >正文

等了两年,Cloudflare 终于给规则引擎加上了通配符

有些功能不是技术上难而是做对了才算真难。通配符Wildcard匹配就是这样。它的概念简单得不能再简单——用一个*号代表任意内容——但要在一个服务数千万域名的规则引擎里把它做对背后藏着一连串工程上的权衡。2024 年 8 月Cloudflare 在 Ruleset Engine 全系列产品上正式上线了通配符支持并把自研的wildcard库作为开源 crate 发布。这篇文章把这件事从头到尾讲清楚。原文链接https://blog.cloudflare.com/wildcard-rules/wildcard cratehttps://crates.io/crates/wildcard开源仓库https://github.com/cloudflare/wildcard先说通配符是什么通配符模式匹配里*表示匹配任意内容包括空内容。一个单独的模式https://example.com/*/t*st可以同时覆盖https://example.com/en/testhttps://example.com/images/toasthttps://example.com/blog/trust每个*捕获的内容可以用${1}、${2}这样的语法在目标表达式里引用。这在 URL 重定向里尤其有用源 URL 模式https://example.com/*/t*st 目标 URL https://${1}.example.com/t${2}st这条规则会把https://example.com/uk/test重定向到https://uk.example.com/testhttps://example.com/images/toast重定向到https://images.example.com/toast一条规则覆盖无数变体。这就是通配符的价值。没有通配符之前用户有多痛苦Cloudflare 在 2012 年推出的 Page Rules 原生支持通配符匹配。彼时把旧路径重定向到新路径只需要两行配置源 URL https://example.com/old-path/* 目标 URLhttps://example.com/new-path/$12022 年Cloudflare 推出了基于 Ruleset Engine 的 Single Redirects作为 Page Rules URL 转发功能的现代替代品。新产品在性能和表达能力上更强但当时不支持通配符。要在 Single Redirects 里实现同样的旧路径转新路径写法变成了这样过滤条件 (http.host eq example.com and starts_with(http.request.uri.path, /old-path/)) 目标表达式 concat(/new-path/, substring(http.request.uri.path, 10)) // 其中 10 是 /old-path/ 的字符长度需要手动计算对于有正则表达式基础的开发者来说这个写法勉强可以接受。但对于绝大多数用户而言starts_with、substring、concat嵌套起来还要手动数字符串长度——这已经超出了配置规则的认知范畴变成了写代码。用户的反馈持续了两年通配符支持是 Cloudflare Rules 产品收到最多的功能请求之一。这次发布的三个新能力1. 两个新的匹配操作符在 Ruleset Engine 的过滤表达式里新增了两个操作符wildcard大小写不敏感匹配时忽略大小写test和TesT视为相同。行为和老版 Page Rules 一致方便迁移。strict wildcard大小写敏感严格匹配test不等于TesT。这两个操作符可以作用于 Ruleset Engine 里所有的字符串字段包括完整 URI、Host、HTTP 请求头、Cookie、User-Agent、来源国家等。一个典型的 WAF 规则示例——匹配特定 User-Agent 格式的请求http.user_agent wildcard Mozilla/*(*Macintosh; Intel Mac OS*)*Gecko/*Firefox/*这条规则可以匹配所有符合该模式的 Firefox 请求同时忽略大小写差异。2. wildcard_replace() 函数在 Single Redirects 里新增了wildcard_replace()函数允许在重定向目标 URL 里引用通配符匹配到的片段wildcard_replace( http.request.full_uri, https://example.com/*/page/*, https://example.com/products/${1}?page${2} )这一条配置就能把所有符合模式的 URL 动态转换为新格式不需要concat、substring不需要数字符串长度。3. 简化的可视化界面对于不想写函数表达式的用户Cloudflare 在 Single Redirects 的控制台界面里新增了通配符模式入口直接填写源 URL 模式和目标 URL 模式逻辑和 Page Rules 时代完全一致。从视觉上看和 Page Rules 几乎没有学习成本背后运行的是更高性能的 Ruleset Engine。覆盖的产品范围Cache Rules、Compression Rules、Configuration Rules、Custom Errors、Origin Rules、Redirect Rules、Snippets、Transform Rules、WAF、Waiting Room 以及其他基于 Ruleset Engine 的产品全部适用。且对所有套餐用户免费开放。工程实现为什么要自己写一个通配符库Ruleset Engine 核心用 Rust 实现。加入通配符支持时团队首先评估了现有的 Rust crate。为什么不用 regex crateregexcrate 是 Rust 生态里最成熟的正则表达式库。但问题在于通配符模式需要先转换为正则表达式——*转为.*同时还要对其他在正则里有特殊含义的字符做转义处理。这层转换增加了额外复杂度而且引入了通配符语义和正则语义之间不必要的摩擦。为什么不用 wildmatch cratewildmatch是专门为通配符匹配设计的 Rust 库不需要转换为正则也处理了通配符匹配的时间复杂度问题——在最坏情况下是 O(p ℓ s·ℓ)其中 p 是模式长度ℓ 是输入串长度s 是*号的数量。但wildmatch有两个关键限制无法满足需求只支持 UTF-8 字符串Ruleset Engine 需要字节级别的匹配不能假设输入是合法的 UTF-8不支持转义序列用户有时需要匹配字面量的*应该能用\*来表达wildmatch不支持这个还有一个更根本的问题wildcard_replace()函数需要的不只是是否匹配而是匹配到了什么——需要把每个*对应的捕获片段提取出来以便在目标 URL 里替换。wildmatch没有这个能力。自研的选择Kurt 算法 Krauss 优化Cloudflare 最终决定自行实现一个 wildcard crate基于 Kurt 2016 年的迭代算法结合 Krauss 2014 年算法的优化改进。实现支持字节级匹配不限制输入必须是合法 UTF-8转义序列\*表示字面量星号\\表示字面量反斜杠捕获匹配段每个*匹配的子串都可以被提取供wildcard_replace()使用安全设计Ruleset Engine 将单个模式里的*数量上限设为 8 个。这个限制有两层意义一是控制最坏情况下的时间复杂度保证规则执行的性能下界二是防止恶意用户通过构造极端复杂的模式和输入字符串来消耗过量 CPU是一种主动的滥用防护设计。总结这次更新的表面是一个功能发布背后是一次从用户体验出发的完整工程决策链用户反馈 → 找到根本问题规则表达式对普通用户过于复杂→ 评估现有方案两个主流 crate 均不满足→ 自研并开源精确满足需求同时回馈生态→ 在多个产品和所有套餐上同步上线。对于 Cloudflare 的用户最直接的收益是URL 重定向这件事终于可以像十二年前用 Page Rules 一样简单直接地做到同时享受新引擎的性能优势。对于 Rust 开发者wildcardcrate 已经开源字节级匹配、转义支持、捕获组提取可以直接用于任何有类似需求的项目。

相关文章:

等了两年,Cloudflare 终于给规则引擎加上了通配符

有些功能,不是技术上难,而是做对了才算真难。 通配符(Wildcard)匹配就是这样。它的概念简单得不能再简单——用一个 * 号代表"任意内容"——但要在一个服务数千万域名的规则引擎里把它做对,背后藏着一连串工…...

从游戏开发视角看OpenGL:在VS2022中快速搭建你的第一个3D渲染窗口(附完整代码)

从游戏开发视角看OpenGL:在VS2022中快速搭建你的第一个3D渲染窗口(附完整代码) 当你想绕过游戏引擎直接操控图形渲染管线时,OpenGL始终是最可靠的伙伴。作为跨平台的图形API标准,它既能让你深入理解现代GPU的工作机制&…...

2026 四川创意设计服务排名:可视化、UI、品牌 VI 与 3D 数字内容优选

随着政企数字化推进,可视化大屏、UI 界面、品牌 VI、3D 数字内容等需求持续上升。市场机构能力差异较大,选择靠谱服务商需结合技术实力、项目经验、服务口碑、定制能力等综合判断。本文整理四川地区优质设计机构,聚焦政企与品牌客户需求&…...

TestDisk数据恢复终极指南:3步找回丢失分区和误删文件

TestDisk数据恢复终极指南:3步找回丢失分区和误删文件 【免费下载链接】testdisk TestDisk & PhotoRec 项目地址: https://gitcode.com/gh_mirrors/te/testdisk 你是否曾经因为硬盘分区突然消失而惊慌失措?或者不小心删除了重要文件却找不到回…...

别再乱调价了!广告主必看的oCPC出价与转化回传实战避坑指南

广告主必读:oCPC出价与转化回传的7个致命误区与破解之道 "昨天账户成本又爆了!"深夜11点,某电商运营小王的微信群弹出这条消息。这已经是本周第三次因为oCPC投放问题紧急加班。像小王这样的广告优化师,每天都在与飘忽不…...

从实验室小白到看懂PET报告:给临床医生和影像科新人的非物理向科普指南

从实验室小白到看懂PET报告:给临床医生和影像科新人的非物理向科普指南 第一次拿到PET报告时,肿瘤科的李医生盯着那个"SUVmax12.3"的数值皱起了眉头——这个数字意味着什么?比上周高了0.5是进展还是误差?左下肺那个&quo…...

替换背景颜色怎么操作?2026年最全免费工具推荐与详细教程

最近有很多粉丝问我:替换背景颜色怎么操作?特别是做电商、制作证件照、处理产品图的朋友,都在寻找一个既简单又好用的解决方案。今天我就把自己用过的所有工具和方法整理出来,手把手教你替换背景颜色,让你的图片瞬间变…...

没有专业暗室怎么办?用示波器+电流钳给你的产品做个骚扰功率‘体检’(附估算方法与避坑指南)

低成本EMC预检方案:用示波器与电流钳实现骚扰功率快速评估 当你的硬件团队正在为新产品熬夜调试时,最令人沮丧的莫过于EMC实验室发回的那份不合格报告——特别是当问题出在38MHz频点超标这种本可早期发现的基础性问题上。我们曾为某医疗设备客户节省了23…...

你的电脑管家可能是蓝屏帮凶?实测Wise System Monitor与英特尔RST驱动冲突引发的IRQL_NOT_LESS_OR_EQUAL

你的电脑管家可能是蓝屏帮凶?实测Wise System Monitor与英特尔RST驱动冲突引发的IRQL_NOT_LESS_OR_EQUAL 你是否经历过这样的场景:电脑突然蓝屏,屏幕上显示"IRQL_NOT_LESS_OR_EQUAL"这样的专业术语,让你一头雾水&#…...

三步掌握QQ空间记忆备份:GetQzonehistory让你的青春永不褪色

三步掌握QQ空间记忆备份:GetQzonehistory让你的青春永不褪色 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 还记得那些年在QQ空间留下的青春印记吗?那些深夜的感…...

Git克隆又报错?手把手教你排查并解决GnuTLS recv error (-110)这个烦人问题

Git克隆报错GnuTLS recv error (-110)的终极排查指南 当你正专注地执行git clone命令,突然屏幕上跳出GnuTLS recv error (-110): The TLS connection was non-properly terminated.这样的错误提示,那种感觉就像在高速公路上突然爆胎。作为开发者&#xf…...

2026,RAG 正在被重写:从向量检索到 Agent 认知架构的范式迁移

向量相似度检索已经到头了。2026 年的 RAG 正在经历一场从"管道"到"大脑"的根本性重构——而你可能还在用 2023 年的思路搭系统。 一个让人焦虑的事实 最近我审了好几个 RAG 项目,发现一个尴尬的共性:演示都很漂亮,上线…...

【AI Agent实战】竞品分析的正确姿势:四象限 + 对标矩阵 + 护城河三板斧,为你的产品找到独占位

导读:很多人做竞品分析,上来就列一张"功能对比表",然后得出一个不痛不痒的结论:“我们有,他们也有。”——这样的分析对决策毫无帮助。本文用我自己的项目 DocCenter 为例,完整拆解一套可复用的竞…...

终极破解指南:Cursor Pro永久免费使用完整解决方案

终极破解指南:Cursor Pro永久免费使用完整解决方案 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached your trial …...

银河麒麟V10上,麒麟天御V4.0.0客户端三种安装方式保姆级实测(含软件源配置避坑点)

银河麒麟V10系统下麒麟天御V4.0.0客户端部署全攻略:三种安装方案深度评测与避坑指南 在国产化操作系统逐步替代Windows的今天,银河麒麟V10作为主流国产桌面系统,其安全管控能力直接关系到企业级用户的使用体验。麒麟天御安全域管平台V4.0.0客…...

从零搭建一个简易WebGIS项目:用Leaflet.js和GeoJSON数据快速上手空间可视化

从零搭建一个简易WebGIS项目:用Leaflet.js和GeoJSON数据快速上手空间可视化 在数字化浪潮中,地理空间数据的价值日益凸显。想象一下,你手头有一份包含全国城市坐标的数据集,如何让它从枯燥的表格变成可交互的动态地图?…...

从零到可运行:手把手在Ubuntu 20.04上为YOLOv5搭建TensorRT加速环境(含模型转换实战)

从零到可运行:手把手在Ubuntu 20.04上为YOLOv5搭建TensorRT加速环境(含模型转换实战) 在计算机视觉领域,YOLOv5凭借其出色的实时检测性能成为工业界的热门选择。但当我们将训练好的模型部署到实际生产环境时,往往会面临…...

告别手动点点点:用Python脚本一键启动CANoe测试(附TestModule/vTESTstudio配置避坑指南)

告别手动点点点:Python全自动CANoe测试框架实战指南 每天重复点击相同的按钮,等待漫长的界面响应,然后在不同的配置文件中来回切换——这可能是车载测试工程师最熟悉的噩梦。当项目周期压缩到以小时计算时,那些隐藏在CANoe界面背后…...

PDH锁频原理看不懂?别怕,这篇用‘开车找车位’的比喻给你讲明白(附Moku实测)

PDH锁频原理看不懂?别怕,这篇用‘开车找车位’的比喻给你讲明白(附Moku实测) 光学实验室里最让人头疼的场景之一,就是看着文献里那些PDH锁频技术的公式和框图发愣。误差信号、相位调制、解调……每个词都认识&#xff…...

智能编程搭档:如何用快马平台的AI模型优化你的蓝桥杯嵌入式代码

最近在准备蓝桥杯嵌入式比赛时,遇到了一个棘手的问题:我的传感器数据采集和LCD显示系统总是卡顿,刷新速度慢得像老牛拉车。经过一番折腾,终于找到了解决方案,今天就来分享一下如何用AI辅助优化嵌入式代码的实战经验。 …...

APP加固防Hook效果哪家强?实测RASP与代码虚拟化技术差距

“我们的支付SDK被Hook了,用户下单金额被篡改,一晚上损失了几十万。”这是某电商平台安全负责人亲口告诉我的惨痛经历。在外挂与黑产眼里,Hook技术是攻击移动应用的“万能钥匙”,通过篡改函数返回值、修改内存数据,可以…...

BilibiliDown:你的专属B站视频离线收藏库

BilibiliDown:你的专属B站视频离线收藏库 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/bi/BilibiliDo…...

003-JSON-Output-Control

JSON 格式输出控制:如何让 AI 每次都返回完美的结构化数据?💡 摘要:大模型天生不擅长输出严格的 JSON 格式。本文教你如何通过 Schema 验证、自动修复和提示工程,确保 AI 每次都返回合法、可用的结构化数据。引言 你让…...

别再只抓802.11了!Wireshark解密WPA/WEP实战:从抓包到看清网页访问的完整流程

无线网络数据包解密实战:从802.11到应用层的完整解析 当你第一次打开Wireshark捕获无线网络数据包时,满屏的802.11协议帧可能会让你感到困惑——那些期待的HTTP请求、TCP连接和DNS查询都去哪了?这不是你的操作有问题,而是无线加密…...

2026年新高中高考英语大纲词汇表3500个电子版PDF(含正序版、乱序版和默写版)

小为整理了2026年高中英语大纲词汇表3500个完整版,PDF电子版,可下载打印,包含内容:高中英语大纲词汇正序版高中英语大纲词汇乱序版高中英语大纲词汇默写版(包含汉译英和英译汉)正序版乱序版高中英语大纲词下…...

MCP 2026日志分析智能告警配置实战手册(含YAML模板库+动态阈值算法白皮书)

更多请点击: https://intelliparadigm.com 第一章:MCP 2026日志分析智能告警配置概览 MCP 2026 是新一代云原生可观测性平台的核心组件,其日志分析模块支持基于语义理解与动态阈值的智能告警机制。该能力依托内置的轻量级规则引擎&#xff0…...

前后端跨域彻底弄懂:前端代理、Nginx线上部署、后端到底要不要配CORS?

文章目录一、前言二、先搞懂核心:什么是跨域?为什么后端才能根治?1. 跨域的本质:不是后端不让访问,是浏览器不让过2. 什么是CORS?三、本地开发环境:前端配Proxy代理,后端要不要管跨域…...

中级OpenGL教程 004:为几何体注入法线灵魂

✨3D 渲染进阶|为 Geometry 几何体注入法线灵魂:从数据到渲染全流程指南Bilibili 同步视频🎯 核心目标:为几何体补齐法线属性🔍 核心认知:顶点重合≠数据复用📝 Step 1:手写立方体法…...

面向智能客服的对话状态跟踪与策略优化,智能客服的核心突破:从“听不懂人话”到精准理解用户意图——对话状态跟踪与策略优化完全指南

目录 第一部分:什么是对话状态跟踪?——智能客服的“工作记忆” 1.1 一个典型案例让你秒懂DST 1.2 状态跟踪的三个核心挑战 第二部分:从规则到预训练模型——DST的技术演进 2.1 基于规则和词典的早期方法 2.2 基于神经网络的方法——TRADE和SGD等经典模型 2.3 预训练…...

手把手教你用Vivado 2019.1在Kintex-7上搭建10G UDP协议栈(附12套源码)

Kintex-7 FPGA实战:从零构建10G UDP通信系统的完整指南 当我在实验室第一次看到Kintex-7开发板通过10G光纤传输数据时,那种流畅的数据流简直令人着迷。不同于传统的千兆以太网,10G网络带来的性能飞跃让实时高清视频传输、高速数据采集等应用成…...