全书目录

第五十四篇:OpenResty 完全指南 —— 可编程网关锻造厂宇宙

八、OpenResty、Nginx、Kong、Envoy 到底怎么选

4 分钟 1,395 字 第 943 / 962 个阅读单元

这一段一定要讲透,因为很多团队选型时把它们放成一行对比,但本质层级不一样。

#1. OpenResty vs Nginx

#Nginx 更像什么

一台极强的工业级传送带系统:

  • 静态资源
  • 反向代理
  • 负载均衡
  • TLS 终止
  • 规则转发

如果你的需求主要是“稳定代理 + 少量规则”,原生 Nginx 已经很好。

#OpenResty 多了什么

它让这台传送带变成可编程工厂:

  • 可以在阶段中插入 Lua
  • 可以做动态决策
  • 可以访问缓存/Redis/HTTP 服务
  • 可以把网关能力写成程序,而不是只写死规则

#什么时候 Nginx 就够

  • 纯反向代理
  • 静态站点
  • 简单负载均衡
  • 少量 header/rewrite 规则
  • 对“动态治理”要求很低

#什么时候该上 OpenResty

  • 鉴权逻辑不是几条固定规则
  • 路由依赖请求内容或外部配置
  • 需要边缘脚本化治理
  • 要自己做 API 网关、灰度网关、WAF、BFF 边缘层

一句话:

text
Nginx = 高性能代理
OpenResty = 高性能可编程代理

#2. OpenResty vs Kong

这组关系最容易搞混。

#本质关系

Kong 不是 OpenResty 的替代品,它历史上就是构建在 Nginx/OpenResty 之上的网关产品层

所以可以理解成:

text
OpenResty = 网关发动机和锻造平台
Kong      = 基于这台发动机做好的整车

#OpenResty 的优势

  • 自由度高
  • 没有被产品模型强约束
  • 插件体系、配置模型、路由语义都可自定义
  • 特别适合做“很像网关,但又不只是网关”的边缘系统

#Kong 的优势

  • 开箱即用
  • 有成熟插件/PDK/管理面
  • 有标准化实体模型:Service、Route、Plugin、Consumer
  • 更适合平台化、多团队治理、标准 API 管理

#该怎么选

如果你要的是:

  • 快速上线标准 API 网关
  • 团队希望少写底层治理代码
  • 需要较成熟的平台能力

选 Kong 往往更省事。

如果你要的是:

  • 非标准协议/特殊路由/深度定制行为
  • 做企业内部专用流量中台
  • 网关能力与业务规则强耦合
  • 你愿意拥有更高自由度,也愿意承担工程复杂度

选 OpenResty 往往更对路。

一句话:

text
OpenResty 给你锻造厂
Kong 给你标准量产车

#3. OpenResty vs Envoy

这两者经常在云原生体系里被放一起比较,但气质很不一样。

#Envoy 更像什么

一台面向现代基础设施的“滤镜式数据平面”。

它的典型结构是:

text
Listener
  -> Filter Chain
     -> Network Filters (L4)
     -> HTTP Connection Manager
        -> HTTP Filters
        -> Router

也就是说,Envoy 的世界观是“强类型 filter chain + 动态控制面下发配置”。

#OpenResty 的世界观

OpenResty 更像“阶段钩子 + 脚本运行时 + 自定义编排”。

#Envoy 的典型优势

  • Service Mesh
  • xDS 动态配置生态
  • L4/L7 多协议代理
  • 云原生控制面整合
  • Sidecar / Gateway 双栖能力强
  • Filter 链抽象更统一

#OpenResty 的典型优势

  • Lua 可编程性极强
  • 快速定制边缘行为
  • 写定制逻辑的门槛比 C++/Wasm Filter 低
  • 对“业务贴边网关”特别顺手

#简单判断

如果你是:

  • Kubernetes / Service Mesh / 控制面驱动
  • 想要统一 data plane
  • 需要和 Istio、Gateway API、xDS 体系更紧密联动

Envoy 更常见。

如果你是:

  • 自建边缘网关
  • 深度定制请求处理逻辑
  • 团队更擅长 Lua/Nginx 而非 Envoy Filter 扩展
  • 追求开发效率和控制力

OpenResty 更合适。

一句话:

text
Envoy 像一套云原生数据平面内核
OpenResty 像一座脚本化边缘锻造厂