各种API的用法好像差不多,还是自己查官网吧,后面就不在多说了。下面再介绍下
Plugin
、Upstream
、SNI
、Certificate
、Target
,然后就结束这一篇吧。
Plugin对象
Plugin(插件),在HTTP请求/响应生命周期中执行。是Kong服务添加功能的方式,例如认证或速率限制。通过 Plugins Gallery 可以找到更多关于插件安装和使用的教程。
当向服务添加插件配置时,客户端对该服务发出的每个请求都将运行该插件。如果一个插件需要为特定的消费者设置不同的值,可以通过指定consumer_id
值来做到这一点。
当一个插件被配置多次时,优先级是:
1、在一个Route、一个Service和一个Consumer的组合上配置的插件。(Consumer意味着请求必须经过身份验证)。
2、在Route和Consumer的组合上配置的插件。(Consumer意味着请求必须经过身份验证)。
3、在Service和Consumer的组合上配置的插件。(Consumer意味着请求必须经过身份验证)。
4、在Route和Service的组合上配置的插件。
5、在Consumer上配置的插件。(Consumer意味着请求必须经过身份验证)。
6、在Route上配置的插件。
7、在Service上配置的插件。
8、配置为在全局运行的插件。
反正就是能添加一些额外的功能,例如:身份验证、安全、流量控制、分析和监控、转换请求和响应、日志记录、自定义等。
请求主体
属性 | 描述 |
---|---|
name | 要添加的插件的名称。 |
consumer_id 可选 | 使用者的唯一标识符 |
config.{property} | 插件的配置属性 |
enabled | 是否应用了插件。默认: true . |
Upstream对象
Upstream对象,代表一个虚拟主机名,可以用来在多个服务(目标)上对传入的请求进行负载平衡。例如,一个名为service.v1.xyz
的upstream针对一个host
是service.v1.xyz
的服务对象。对该服务的请求将被提交到upstream定义的目标。
Upstream还包括一个健康检查器,它能够根据自己的能力或无法服务请求来启用和禁用目标。健康检查器的配置存储在上游对象中,并应用于它的所有目标。
反正就是Nginx的Upstream
请求主体
属性 | 描述 |
---|---|
name | 这是一个主机名, 必须是Service的host |
slot 可选 | 负载均衡器算法中的槽数 (10 -65536 , 默认: 1000 ). |
hash_on 可选 | hash值对象: none , consumer , ip , 或者header (默认: none 是一个加权循环方案). |
hash_fallback 可选 | hash_on 对象输入失败时处理: none , consumer , ip , 或者header (默认 none ). |
hash_on_header 半可选 | 头部作为hash的名称(当 hash_on 设置为 header 时需要). |
hash_fallback_header 半可选 | 头部hash失败时备选方案. |
healthchecks.active.timeout 可选 | 套接字健康检查超时时间(以秒为单位). |
healthchecks.active.concurrency 可选 | 健康检查中要同时检查的目标数量。 |
healthchecks.active.http_path 可选 | 探测活动健康检查的访问路径. |
healthchecks.active.healthy.interval 可选 | 健康检查之间的间隔(以秒为单位)。值为0表示不执行 |
healthchecks.active.healthy.http_statuses 可选 | 一个HTTP状态数组,表示在健康检查中返回时的成功状态 |
healthchecks.active.healthy.successes 可选 | healthchecks.active.healthy.http_statuses 返回成功的数量 |
healthchecks.active.unhealthy.interval 可选 | 检查失败目标的间隔时间(秒). 0表示不检查 |
healthchecks.active.unhealthy.http_statuses 可选 | 一个HTTP状态数组,表示在健康检查中返回时的失败状态 |
healthchecks.active.unhealthy.tcp_failures 可选 | 返回TCP失败的数量 |
healthchecks.active.unhealthy.timeouts 可选 | 失败目标的超时次数 |
healthchecks.active.unhealthy.http_failures 可选 | healthchecks.active.unhealthy.http_statuses 返回失败状态的数量. |
healthchecks.passive.healthy.http_statuses 可选 | 被动检查. |
healthchecks.passive.healthy.successes 可选 | 被动检查 |
healthchecks.passive.unhealthy.http_statuses 可选 | 被动检查. |
healthchecks.passive.unhealthy.tcp_failures 可选 | 被动检查 |
healthchecks.passive.unhealthy.timeouts 可选 | 被动检查. |
healthchecks.passive.unhealthy.http_failures 可选 | 被动检查. |
Target对象
Target对象,目标是一个ip地址/主机名,带有一个端口,用来标识后端服务的实例。每个upstream都可以有许多目标,并且可以动态地添加目标。
为同一个upstream创建相同目标不同权限,新的会覆盖旧的设置。要禁用目标,请发布一个新的目标weight=0
;或者使用DELETE
禁用目标。
反正这个就是Upstream下负载请求的目标对象。
请求主体
属性 | 描述 |
---|---|
target | 目标地址(ip或主机名)和端口。 默认端口:8000 . 如果主机名解析为SRV记录, port 值将被dns记录中的值覆盖。 |
weight 可选 | 此目标在上游负载均衡器中的权重 (0 -1000 , 默认值:100 ). 如果主机名解析为SRV记录,weight 值将被dns记录中的值覆盖。 |
SNI对象
SNI对象,表示主机名到证书的多对一映射。也就是说,证书对象可以有许多与之关联的主机名;当Kong收到SSL请求时,它会在客户端Hello中使用SNI字段来查找证书对象,这是基于与证书相关的SNI。
SNI(Server Name Indication)是为了解决一个服务器使用多个域名和证书的
SSL/TLS
扩展。一句话简述它的工作原理就是,在连接到服务器建立SSL链接
之前先发送要访问站点的域名(Hostname),这样服务器根据这个域名返回一个合适的证书。
请求主体
属性 | 描述 |
---|---|
name | 与证书相关联的SNI名称。 |
ssl_certificate_id | 与SNI主机名关联的证书id (UUID) |
Certificate对象
证书对象代表SSL证书的公共证书/私钥对。这些对象被Kong用来处理加密请求的SSL/TLS
终端。证书可选与SNI对象相关联,将cert/key对绑定到一个或多个主机名。
反正跟https证书相关的那些事情。
请求主体
属性 | 描述 |
---|---|
cert | SSL密钥对的pem编码公共证书。 |
key | SSL密钥对的pem编码私钥。 |
snis 可选 | 一个或多个主机名作为SNI来与这个证书关联。这是一个糖参数,它会在引擎盖下创建一个SNI对象,并将其与这个证书关联起来,方便您使用。 |