Web应用防火墙(WAF)在安全体系中至关重要,但其性能开销与规则灵活性之间的矛盾,长期以来是架构设计中的一个棘手权衡。本文将探讨一种新的设计思路:当 WAF 不再是一个功能固化的安全组件,而是成为一个可编程的边缘安全层时,我们能获得什么?

我们将深入剖析 OpenResty Edge 如何通过其领域特定语言(EdgeLang)和编译优化技术,将复杂的安全规则转化为高性能的网关原生指令。这种方法不仅在基准测试中展现出显著的性能优势,更关键的是,它将安全策略的定义权交还给开发者,使其能与业务逻辑深度融合。本文将通过具体的技术实现、性能数据和架构理念,展示一个高性能、可编程的 WAF 如何从一个被动的防御组件,演进为企业应用交付流程中的内生能力。

高性能的可编程 WAF

“可编程”的安全:EdgeLang

传统的 WAF 往往受限于静态的配置文件或性能低下的脚本,而 OpenResty Edge 引入了我们自主研发的 EdgeLang——一种专为高性能网关设计的领域特定语言(DSL)。不仅是配置规则,更是用一种比手写 Lua 更加简洁高效的语言。

  • 打破边界的扩展性: EdgeLang 不是一座孤岛。它拥有强大的互操作性,支持直接调用自定义 Lua 模块和代码,让你能够复用现有的业务逻辑和脚本。同时,EdgeLang 内置了丰富的预编译库和模块,涵盖了常见的安全防护、数据处理和网络操作功能。这种设计既保证了 OpenResty Edge Node 的轻量化部署,又为开发者提供了足够的扩展能力,让你能够通过 EdgeLang 将复杂的安全策略无缝编排进你的防线中。

  • 超越手写代码的性能(Compiler Magic): 你可能认为灵活性意味着性能牺牲,但在 EdgeLang 中恰恰相反。

    • 高效代码生成: EdgeLang 编译器会将你的规则编译为优化的 Lua 代码,在网关服务器上运行。通过内置的算法优化和代码生成策略,其实际运行速度通常快于手写的 Lua 代码
    • 跨规则深度优化: 我们的编译器实现了先进的全局优化技术。它不会逐条执行规则,而是对所有规则进行“降维打击”式的整合。
  • 高效的匹配技术 通过以下优化,规则集的规模不再是性能的瓶颈:

    • 正则表达式合并 (Regex Merging): 编译器会将所有正则表达式规则合并成一个巨大的状态机 (DFA)。这样一来,无论规则有多少条,系统都只需扫描一次请求数据,就能找出所有匹配的规则及其具体位置。
    • 前缀后缀树 (String Trees): 所有的常量字符串前缀和后缀模式会被组合成单一的、高效的树状数据结构,以加速查找过程。

精细化的敏感度控制

面对 WAF 误报这个行业普遍难题,我们提供了多级敏感度调整机制,让运维团队能够根据实际业务场景灵活应对。

场景化调整策略

  • 攻防演练期:提升敏感度到严格模式,宁可多拦截也要确保安全
  • 业务高峰期:降低敏感度到平衡模式,减少对正常用户的影响
  • 日常运营期:使用标准模式,在安全性和可用性间找到最佳平衡点

通过实时调整敏感度等级,运维团队可以在不同业务阶段快速响应,将误报对业务的影响降到最低。这不是完美的解决方案,但确实是目前最实用的应对策略。

碾压级的性能表现

Screenshot

数据不会说谎。我们模拟了最真实的攻击场景:1 个 Worker 进程,使用 1 个 CPU 核心,加载了 208 条规则。我们测试了随着 URI 参数数量(URI Args,x轴)增加时,系统 RPS(每秒请求数,y 轴)的表现。

  • 起跑线即终点: 在最简单的场景下(1个 URI 参数),OpenResty Edge 的吞吐量(~5300 RPS)已经是 ModSecurity Nginx 版(~1400 RPS)的 3.7 倍。
  • 抗压能力的断层差距: 随着请求复杂度增加(X 轴向右延伸),ModSecurity 的性能呈现指数级崩塌。当 URI 参数达到 20 个时,传统 WAF 几乎已经“窒息”(接近 150 RPS),服务器资源被耗尽。
  • 极限生存能力:在 100 个参数的极端高负载下,OpenResty Edge 依然保持在 1500 RPS 左右——这个数字比 ModSecurity 在最轻松状态下的表现还要好。

这意味着:

用户体验:快,就是留存。

在同等硬件下,OpenResty Edge 的处理能力是竞品几倍到几十倍。即便开启全量 208 条安全规则。这意味着你无需在安全性和速度之间做妥协——用户在享受银行级安全防护的同时,依然拥有丝滑的加载体验。

成本效益:可观的单位经济效益。

OpenResty Edge 仅需 1 个 CPU 核心 即可达到竞品需要几个甚至十几个核心才能支撑的吞吐量。对于云原生企业,这意味着可以大幅削减集群规模,显著降低 AWS/GCP/Azure 的月度账单。用更少的核心承载更多的流量,将技术红利直接转化为真金白银的利润。

从 0 到 1 构建 WAF 防御体系

第一步:奠定全局安全基石

在为具体应用配置防护之前,我们建议先建立一套统一的全局 WAF 规则。这为您的所有服务提供了一个基础的安全水位,能高效拦截常见的、大范围的攻击。这是构建防御体系的起点。

如何设置全局 WAF 规则

第二步:为核心应用开启专属防护

全局规则建立后,下一步就是为您最重要的应用开启 WAF 功能。只有开启后,您设置的规则(无论是全局还是应用专属)才会真正生效,开始守护您的应用。开启应用的 WAF

第三步:精准放行,避免业务干扰

在开启 WAF 防护后,有时可能会遇到正常的业务请求被误拦的情况。为了确保业务的连续性和稳定性,您需要设置白名单,精准地将可信的请求排除在拦截规则之外。

如何设置应用的 WAF 白名单

第四步:实现终极灵活的自定义规则

对于有复杂业务场景或高级安全需求的用户,标准的 WAF 规则可能不够灵活。通过使用 Edgelang 边缘语言,您可以根据请求的任意参数(如 Header、Cookie、URL 等)编写动态、精细的 WAF 规则,实现终极的自定义防护逻辑。

使用 Edgelang 定义 WAF 规则

通过组合运用以上指南,您可以构建一个从全局到局部、从通用到定制、既强大又灵活的 WAF 防御体系。

Beyond WAF:三位一体的架构

传统的网络安全观念常常将 WAF (Web 应用防火墙) 视为一个独立的边界防御工事。然而,在现代复杂的业务架构中,仅仅依赖一个孤立的“安检口”已远远不够。OpenResty Edge 的设计哲学正是这一思路的体现,它构建了一个集 私有 CDN、API 网关与 WAF 于一体的融合式平台。将 WAF 的能力与 CDN 和 API 网关进行深度整合。

让我们通过一个生动的比喻来拆解这个“三位一体”的强大之处。

第一环:CDN —— “高速公路与分流中心”

CDN (内容分发网络) 是整个架构的最外层,也是离全球用户最近的一环。它的核心职责是“加速”与“分流”。

  • 位置: 流量的第一入口,用户访问的起点。
  • 职责:
    • 加速与缓存: 它就像遍布全球的“前置仓库”,将图片、CSS 等静态资源缓存起来,直接交付给用户,无需每次都回到遥远的“总部服务器”(即回源),极大提升了访问速度。
    • 流量清洗: 凭借其庞大的带宽资源,CDN 能够像泄洪区一样吸收并清洗大规模的 L3/L4 层 DDoS 攻击,保护后方业务的可用性。
  • 关系: 在这套架构中,CDN 是 WAF 的“载体”和“前置盾牌”,为精细化的安全检测挡住了第一波巨浪。

第二环:WAF —— “机场安检口”

当流量经过 CDN 的初步分流和加速后,便进入了 WAF (Web 应用防火墙) 的精细化安检环节。

  • 位置: 紧随 CDN 之后,或直接内嵌于 CDN 节点之中,位于 API 网关之前。
  • 职责:
    • 安全检查: WAF 的任务非常纯粹——检查每一个请求是否携带危险品。它不关心你要去哪个登机口(访问哪个业务),只关心你是否安全。它会严密排查请求中是否藏有“炸弹”(SQL 注入)、“刀具”(XSS 攻击)或“伪造证件”(恶意 Cookie)。
  • 关系: WAF 是业务安全的核心防线,确保只有合法的、无害的请求才能进入后续的业务流程。

第三环:API 网关 —— “登机口与调度台”

通过了安全检查的“旅客”(请求),最终会到达 API 网关,这里是通往具体业务系统的“大门”。

  • 位置: 位于 WAF 之后,是所有后端微服务的统一入口。
  • 职责:
    • 身份验证 (Auth): “你是谁?”—— 通过 OAuth/JWT 等机制核实请求的身份。
    • 路由分发 (Route): “你要去哪个服务?”—— 根据请求内容,将其精确导向后端的特定微服务。
    • 精细化治理 (Quota): “你的票能进几次 VIP 厅?”—— 对不同用户或 API 进行精细化的流量控制和配额管理。
  • 关系: API 网关是业务逻辑的“调度总台”,负责请求的身份识别、路由和精细化管理。

当这三个层面不再是独立的、串联的系统,而是在同一个软件内部实现时,架构优势主要体现在以下几个方面:

  • 消除组件间的网络延迟: 在分离式架构中,流量需要在 CDN、WAF、API 网关等不同设备或服务间进行多次网络跳转,每次跳转都会引入额外的网络 I/O 开销和延迟。在一体化模型中,所有处理(缓存、安全检测、路由)都在同一个工作进程 (Worker Process) 的上下文中完成。这意味着数据处理无需跨越网络边界,从而消除了这部分固有的延迟损耗,这对于延迟敏感型业务尤为关键。

  • 简化的技术栈与运维模型: 管理多套异构系统会带来显著的运维开销,包括独立的配置、监控、升级和故障排查。统一的技术栈意味着运维团队只需掌握和维护一个平台,即可覆盖边缘流量的全生命周期管理,从而降低了系统的整体复杂度和人力成本。

融合架构的核心在于深度整合,而非功能堆砌。它将流量处理与安全防护等能力统一在共享的数据平面上,天然优化了数据路径,并极大简化了运维模型。

从防御工具到核心资产

通过在 OpenResty Edge 上构建您的安全体系,您获得的不只是一个高性能的 WAF,而是一个与您的业务逻辑深度融合、可编程的边缘安全层:

  • 通过 EdgeLang 将安全规则编译为原生代码,即使最复杂的防护逻辑也不会成为性能瓶颈,保障了核心业务的响应速度。
  • 将安全、网关、流量管理等功能统一在可编程的软件栈中,用更少的组件和更低的运维复杂度支撑更敏捷的业务。
  • 摆脱静态规则集的束缚,您可以编写能感知业务上下文的动态安全策略,将防御从被动响应升级为主动设计。

未来的应用竞争,不再只是“功能更丰富”,而是“交付得更快、更安全、更可靠”。OpenResty Edge 的可编程安全正是这个时代新的“业务保障引擎”。选择它,也许只是一个技术栈的更新,但背后,是您将安全从“外部约束”转变为“内生能力”的第一步。

关于 OpenResty Edge

OpenResty Edge 是一款专为微服务和分布式流量架构设计的全能型网关软件,由我们自主研发。它集流量管理、私有 CDN 构建、API 网关、安全防护等功能于一体,帮助您轻松构建、管理和保护现代应用程序。OpenResty Edge 拥有业界领先的性能和可扩展性,能够满足高并发、高负载场景下的苛刻需求。它支持调度 K8s 等容器应用流量,并可管理海量域名,轻松满足大型网站和复杂应用的需求。

关于作者

章亦春是开源 OpenResty® 项目创始人兼 OpenResty Inc. 公司 CEO 和创始人。

章亦春(Github ID: agentzh),生于中国江苏,现定居美国湾区。他是中国早期开源技术和文化的倡导者和领军人物,曾供职于多家国际知名的高科技企业,如 Cloudflare、雅虎、阿里巴巴, 是 “边缘计算“、”动态追踪 “和 “机器编程 “的先驱,拥有超过 22 年的编程及 16 年的开源经验。作为拥有超过 4000 万全球域名用户的开源项目的领导者。他基于其 OpenResty® 开源项目打造的高科技企业 OpenResty Inc. 位于美国硅谷中心。其主打的两个产品 OpenResty XRay(利用动态追踪技术的非侵入式的故障剖析和排除工具)和 OpenResty Edge(最适合微服务和分布式流量的全能型网关软件),广受全球众多上市及大型企业青睐。在 OpenResty 以外,章亦春为多个开源项目贡献了累计超过百万行代码,其中包括,Linux 内核、Nginx、LuaJITGDBSystemTapLLVM、Perl 等,并编写过 60 多个开源软件库。

关注我们

如果您喜欢本文,欢迎关注我们 OpenResty Inc. 公司的博客网站 。也欢迎扫码关注我们的微信公众号:

我们的微信公众号

翻译

我们提供了英文版原文和中译版(本文)。我们也欢迎读者提供其他语言的翻译版本,只要是全文翻译不带省略,我们都将会考虑采用,非常感谢!