动态路由示例
基于路径和请求头的动态路由分发示例,展示如何使用 Lua 实现灵活的 后端服务选择。
功能说明
- 基于路径路由: 根据请求 URI 前缀分发到不同后端
- 基于请求头路由: 通过
X-Service或X-Version头选择目标服务 - 灰度发布支持: 通过
X-Canary头引导流量到灰度后端 - 默认回退: 未匹配任何规则时使用默认上游
文件说明
| 文件 | 说明 |
|---|---|
nginx.conf |
Nginx 配置示例,展示路由集成方式 |
router.lua |
动态路由核心逻辑 |
路由规则
路径路由优先级
/api/v2/*-> API v2 服务集群/api/*-> API 默认服务集群/static/*-> 静态资源服务器/ws/*-> WebSocket 服务/*-> 默认 Web 服务
请求头覆盖
X-Service: <name>直接指定目标服务名称X-Version: <ver>指定服务版本(配合服务名使用)X-Canary: true引导到灰度实例
使用方式
- 将
router.lua放置于 Lua 模块搜索路径 - 在
nginx.conf中引入配置 - 根据实际需求修改路由规则和上游地址
Lolly 对应
Lolly 内置 Lua 沙箱支持,可通过 lua_scripts 配置嵌入自定义路由逻辑。
相关文档: docs/lua-nginx-module/08-balancer.md