# 动态路由示例 基于路径和请求头的动态路由分发示例,展示如何使用 Lua 实现灵活的 后端服务选择。 ## 功能说明 - **基于路径路由**: 根据请求 URI 前缀分发到不同后端 - **基于请求头路由**: 通过 `X-Service` 或 `X-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: ` 直接指定目标服务名称 - `X-Version: ` 指定服务版本(配合服务名使用) - `X-Canary: true` 引导到灰度实例 ## 使用方式 1. 将 `router.lua` 放置于 Lua 模块搜索路径 2. 在 `nginx.conf` 中引入配置 3. 根据实际需求修改路由规则和上游地址 ## Lolly 对应 Lolly 内置 Lua 沙箱支持,可通过 `lua_scripts` 配置嵌入自定义路由逻辑。 相关文档: `docs/lua-nginx-module/08-balancer.md`