外观
健康检查拦截器 🔍
功能介绍 💡
WARNING
健康检查拦截器用于验证网关服务是否正常运行,通过请求接口并验证返回结果来确认服务状态。
应用场景
- ✓ 服务健康检查
- ✓ 存活状态监控
- ✓ 负载均衡探测
- ✓ 容器健康探针
配置说明 ⚙️
基础配置参数
| 参数名 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| enabled | boolean | 否 | false | 是否启用拦截器 |
| rules | array[object] | 是 | - | 检测规则列表 |
检测规则配置 (rules)
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| urls | array[string] | 是 | 需要检测的接口地址列表 |
| result | string | 是 | 期望的返回结果字符串 |
| status-code | int | 否 | 期望的HTTP状态码,默认200 |
| predicates | array[string] | 否 | 断言条件列表,满足所有条件才生效 |
TIP
URL匹配规则详见 URL匹配规则说明
断言配置
断言说明
断言用于判断请求是否匹配当前路由,支持多种匹配方式。合理配置断言可以实现精确的路由控制和灵活的请求分发策略。
📋 断言类型速查表
| 断言类型 | 核心功能 | 配置格式 | 典型示例 | 使用场景 |
|---|---|---|---|---|
| Method 🔧 | HTTP方法匹配 | Method=方法1,方法2,... | Method=GET,POST,PUT | RESTful接口、操作权限控制 |
| Header 📋 | 请求头匹配(支持正则) | Header=名称,正则表达式 | Header=X-Id,\d+ | 认证鉴权、版本控制 |
| Query ❓ | 查询参数匹配 | Query=参数名,正则表达式 | Query=name,test | 参数校验、条件过滤 |
| Host 🌐 | 主机名匹配(支持正则) | Host=主机名1,主机名2,... | Host=demo\.wueasy\.com | 多域名部署、环境隔离 |
🎯 断言配置最佳实践
🔐 1. 请求方法控制(Method)
yaml
# RESTful接口设计
Method=GET # 查询操作
Method=POST # 创建操作
Method=PUT,PATCH # 更新操作
Method=DELETE # 删除操作
# 权限控制组合
Method=GET # 只读接口
Method=POST,PUT,DELETE # 写操作接口📊 2. 请求头匹配(Header)- 认证利器
yaml
# API版本控制
Header=X-API-Version,v1\..* # v1.x版本
Header=X-API-Version,v2\.\d+ # v2.数字版本
# 认证令牌验证
Header=Authorization,Bearer\s.+ # Bearer Token格式
Header=X-API-Key,\w{32} # 32位API密钥
# 客户端类型识别
Header=User-Agent,.*Mobile.* # 移动端请求
Header=Content-Type,application/json # JSON格式请求🔍 3. 查询参数匹配(Query)
yaml
# 参数存在性检查
Query=debug # 只要存在debug参数就匹配
Query=debug,true # debug参数值必须为true
Query=version,v\d+\.\d+ # version参数格式验证
# 多参数组合
Query=page,\d+ # 分页参数必须是数字
Query=sort,(asc|desc) # 排序参数只能是asc或desc🌐 4. 主机名匹配(Host)- 多环境部署
yaml
# 生产环境
Host=api\.wueasy\.com # 精确匹配
# 测试环境(支持子域名)
Host=.*\.test\.wueasy\.com # 匹配所有测试子域名
Host=^([a-z]+)\.test\.wueasy\.com$ # 命名捕获组匹配
# 多域名支持
Host=api\.wueasy\.com,api\.wueasy\.cn # 国内外域名配置示例 📝
基础配置
yaml
gateway:
filter:
check:
enabled: true # 是否启用
rules:
- urls:
- /demo/check # 检测接口地址
result: ok # 期望返回结果系统升级提示配置
yaml
gateway:
filter:
check:
enabled: true
rules:
# 系统升级检测 - 当请求头version不为v123时提示系统升级中
- urls:
- /demo/** #检测接口地址
result: '{"code":-1,"msg":"系统升级中"}' #期望返回结果
predicates:
- Header=version,^(?!v123$).*$