Router

描述

APISIX 区别于其他 API 网关的一大特点是允许用户选择不同 Router 来更好匹配自由业务,在性能、自由之间做最适合选择。

你可以通过配置 conf/config.yaml 文件,来设置符合自身业务需求的路由。

配置简介

Router 具有以下配置:

  • apisix.router.http: HTTP 请求路由。

    • radixtree_uri:只使用 uri 作为主索引。基于 radixtree 引擎,支持全量和深前缀匹配,更多信息请参考如何使用 router-radixtree
      • 绝对匹配:完整匹配给定的 uri ,比如 /foo/bar/foo/glo
      • 前缀匹配:末尾使用 * 代表给定的 uri 是前缀匹配。比如 /foo*,则允许匹配 /foo//foo/a/foo/b等。
      • 匹配优先级:优先尝试绝对匹配,若无法命中绝对匹配,再尝试前缀匹配。
      • 任意过滤属性:允许指定任何 Nginx 内置变量作为过滤条件,比如 URL 请求参数、请求头、cookie 等。
    • radixtree_uri_with_parameter:同 radixtree_uri 但额外有参数匹配的功能。
    • radixtree_host_uri:(默认)使用 host + uri 作为主索引(基于 radixtree 引擎),对当前请求会同时匹配 hosturi,支持的匹配条件与 radixtree_uri 基本一致。

::: 注意

在 3.2 及之前版本,APISIX 使用 radixtree_uri 作为默认路由,radixtree_uriradixtree_host_uri 拥有更好的性能,如果你对性能有更高的要求,并且能够接受 radixtree_uri 只使用 uri 作为主索引的特点,可以考虑继续使用 radixtree_uri 作为默认路由

:::

  • apisix.router.ssl:SSL 加载匹配路由。
    • radixtree_sni:(默认)使用 SNI (Server Name Indication) 作为主索引(基于 radixtree 引擎)。