Edgelang 简介

如果您正在寻找一种强大而高效的实现复杂网关逻辑的方法,您可能想要了解一下 EdgeLang。EdgeLang 是由 OpenResty Inc. 创建的一种领域特定语言,它让您可以为 OpenResty Edge 产品编写简洁而富有表达力的规则。OpenResty Edge 是一个流量管理平台,提供了诸如页面规则、Web 应用防火墙(WAF)、负载均衡等各种功能。几乎整个 OpenResty Edge 系统都是构建在 EdgeLang 的基础之上的。许多高流量的网站,如 Qunar、ADP 和 Ajaib,都使用 OpenResty Edge 的 EdgeLang 语言来表达他们复杂的网关和 WAF 规则。

使用 Edgelang 的好处

为什么选择 EdgeLang?以下是一些好处:

  • 性能:EdgeLang 规则被编译成高度优化的状态机,只需扫描一次输入请求数据。这意味着您可以有多个规则,其中包含复杂的条件,涉及正则表达式和字符串模式,而不牺牲速度。EdgeLang 规则通常比手写的 Lua 代码快很多倍,即使是使用 LuaJIT。

Embeded image

Embeded image

Embeded image

  • 安全性:EdgeLang 是一种基于规则的语言,可以防止常见的编码错误,如无限循环、内存泄漏或未定义的变量。您不必担心因为错误的代码而导致网关或 WAF 崩溃。
  • 灵活性:EdgeLang 允许您用简单和可读的语法做很多事情。您可以操作头部、Cookie、查询字符串、正文数据等。您还可以调用自定义的 Lua 代码或模块,甚至是 C/C++ 代码,如果您需要更多的功能。EdgeLang 与其他 OpenResty 组件(如 ngx_lua 和 resty.core)很好地协同工作。
  • 可维护性:EdgeLang 规则易于编写和理解。它们看起来像文档而不是代码。您可以将规则组织成组,并将它们应用到不同的域名或路径。您还可以使用基于 Web 表单的页面规则来创建和管理规则,而无需编写任何代码。

EdgeLang 的设计者曾经在 Cloudflare 工作多年,也看到了维护用 Lua 编写的众多网关逻辑有多困难。EdgeLang 是一个更好的替代方案,提供了更多的功能和性能。

Edge Admin 中的 Edgelang

OpenResty Edge 的 web 控制台 Edge Admin 中,我们使用 Edgelang 来实现各种功能,比如设置页面规则或 WAF 规则。

Embeded image

Embeded image

如果您想了解更多关于 EdgeLang 的信息,您可以在我们的文档网站上阅读我们全面的用户手册:

https://doc.openresty.com.cn/cn/edge/edgelang/

总结

EdgeLang 是一种强大而高效的实现 OpenResty Edge 产品复杂网关逻辑的方式。它提供了许多好处,如性能、安全性、灵活性和可维护性。EdgeLang 规则易于编写和理解,并且与其他 OpenResty Edge 功能协同工作。您可以将 EdgeLang 用于各种目的,例如在 Edge Admin 中设置页面规则或 WAF 规则。如果您想了解更多关于 EdgeLang 的信息,您可以在我们的文档网站上阅读我们全面的用户手册。我们希望您喜欢使用 EdgeLang 和 OpenResty Edge 来创建惊艳的 Web 网关或私有 CDN 网络。

关于作者

章亦春是开源 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. 公司的博客网站 。也欢迎扫码关注我们的微信公众号:

我们的微信公众号

翻译

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