lolly/docs/lua/dynamic-routing

动态路由示例

基于路径和请求头的动态路由分发示例,展示如何使用 Lua 实现灵活的 后端服务选择。

功能说明

  • 基于路径路由: 根据请求 URI 前缀分发到不同后端
  • 基于请求头路由: 通过 X-ServiceX-Version 头选择目标服务
  • 灰度发布支持: 通过 X-Canary 头引导流量到灰度后端
  • 默认回退: 未匹配任何规则时使用默认上游

文件说明

文件 说明
nginx.conf Nginx 配置示例,展示路由集成方式
router.lua 动态路由核心逻辑

路由规则

路径路由优先级

  1. /api/v2/* -> API v2 服务集群
  2. /api/* -> API 默认服务集群
  3. /static/* -> 静态资源服务器
  4. /ws/* -> WebSocket 服务
  5. /* -> 默认 Web 服务

请求头覆盖

  • X-Service: <name> 直接指定目标服务名称
  • X-Version: <ver> 指定服务版本(配合服务名使用)
  • X-Canary: true 引导到灰度实例

使用方式

  1. router.lua 放置于 Lua 模块搜索路径
  2. nginx.conf 中引入配置
  3. 根据实际需求修改路由规则和上游地址

Lolly 对应

Lolly 内置 Lua 沙箱支持,可通过 lua_scripts 配置嵌入自定义路由逻辑。 相关文档: docs/lua-nginx-module/08-balancer.md