# 动态路由示例

基于路径和请求头的动态路由分发示例，展示如何使用 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: <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`
