Skip to content

健康检查拦截器 🔍

功能介绍 💡

WARNING

健康检查拦截器用于验证网关服务是否正常运行,通过请求接口并验证返回结果来确认服务状态。

应用场景

  • ✓ 服务健康检查
  • ✓ 存活状态监控
  • ✓ 负载均衡探测
  • ✓ 容器健康探针

配置说明 ⚙️

基础配置参数

参数名类型必填默认值说明
enabledbooleanfalse是否启用拦截器
rulesarray[object]-检测规则列表

检测规则配置 (rules)

参数名类型必填说明
urlsarray[string]需要检测的接口地址列表
resultstring期望的返回结果字符串
status-codeint期望的HTTP状态码,默认200
predicatesarray[string]断言条件列表,满足所有条件才生效

TIP

URL匹配规则详见 URL匹配规则说明

断言配置

断言说明

断言用于判断请求是否匹配当前路由,支持多种匹配方式。合理配置断言可以实现精确的路由控制和灵活的请求分发策略。

📋 断言类型速查表

断言类型核心功能配置格式典型示例使用场景
Method 🔧HTTP方法匹配Method=方法1,方法2,...Method=GET,POST,PUTRESTful接口、操作权限控制
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$).*$

相关文档 📚