微服务网关支持路由、负载均衡、限流和鉴权策略,为了帮助您更好的配置策略,本文对各种策略的配置进行说明。

路由-Zuul

路由配置兼容开源的 Spring Cloud Netflix Zuul,详情请参见Router and Filter: Zuul

负载均衡-Ribbon

负载均衡的配置兼容开源的 Spring Cloud Netflix Ribbon,详情请参见Working with load balancers

说明 如果您已自建注册中心,例如 Eureka,可以在控制台添加注册中心,详情请参见添加注册中心。当注册中心中 Server列表(格式为 IP:Port)发生变更时,自动发布到网关生效。

限流-Sentinel

限流的配置部分兼容开源社区版 Sentinel。目前只支持单机版限流,具体的配置解释如下:

sentinel:
  rules:
    - name: rule1
      path:
        - pattern: /bbbb
      count: 200
      interval: 10
    burst: 5

鉴权-JWT

使用 JWT 对 Client 请求鉴权时,请先在控制台创建凭证,详情请参见创建凭证。生成鉴权策略需要使用的 Client Token 和 Server Key,并将 Client Token 授予信任的服务调用方。

JWT配置除 JWT 根配置外,有 providers 和 rules 两个子节点。providers 表示有哪些鉴权实体,rules 表示如何判断某次请求需要进行鉴权。为了帮助您理解,下面以一个配置示例从鉴权的流程来解释两个配置的含义。

rules: // 表示匹配规则的合集
    - match: // 表示一个匹配规则
          path: /greeting // 具体匹配的路径,与Zuul中的path属性含义和判断方式相同
      requires: // 表示匹配之后需要哪些鉴权实体实施鉴权
          providerName: ticket_name // 鉴权实体的名字,与providers中的唯一名称对应,如果providers中不存在该名称的鉴权实体,直接判定鉴权失败,请求被block

providers: // 表示鉴权实体的集合
    ticketName: // 表示一个鉴权实体,名称唯一,与rules/requires/providerName对应
      issuer: http://alibabacloud.com // JWT Client Token和Server Key的发布方,默认为alibabacloud
      localJwks: PUBLIC-KEY // Server Key,通过控制台凭证管理生成,可以从控制台凭证详情中直接复制过来
      fromHeaders: // 获取Client Token的Http Header属性,列表类型,如果为空,默认以Authorization:Bearer XXX形式获取
        - jwt-assertion
        - jwt1-assertion
      fromParams: // 获取Client Token的Http Query Param属性,列表类型,如果为空,默认从access_token获取
        - jwt_token