Kong 插件非官方 FAQ

Unofficial FAQ

Posted by ms2008 on May 22, 2018

经过了前面对 Kong 插件机制的分析,这里来整理一下非官方 FAQ 以加深理解,以下 FAQ 针对于 Kong 0.12.3 版本。

1. 插件怎么用?

插件可以应用在 API 上;也可以应用在 Consumer 上;同样还能应用在指定 API 的指定 Consumer 上;当然也少不了 GLOBAL 用法。总之,Kong 插件可以有四种启用方式:

  • api
  • consumer
  • api & consumer
  • global

2. 一个 API 或者是 Consumer 可以添加同一个插件多次吗?

不可以。但是插件不同应用方式是可以添加相同的插件的,比如:API 可以添加 rate-limit 插件;Consumer 同样可以添加 rate-limit,只不过最后只有一个会生效。

3. 插件的执行顺序?

插件的执行顺序由插件自身的优先级唯一确定。即,Kong 一旦启动,其插件的执行顺序就已经确定,和启用插件的方式无关,并不会在运行中动态改变。Kong 默认自带插件的优先级如下(越大越优先):

PLUGIN PRIORITY
bot-detection 2500
cors 2000
jwt 1005
oauth2 1004
key-auth 1003
ldap-auth 1002
basic-auth 1001
hmac-auth 1000
ip-restriction 990
request-size-limiting 951
acl 950
rate-limiting 901
response-ratelimiting 900
request-transformer 801
response-transformer 800
aws-lambda 750
http-log 12
statsd 11
datadog 10
file-log 9
udp-log 8
tcp-log 7
loggly 6
runscope 5
syslog 4
galileo 3
request-termination 2
correlation-id 1

4. 插件生效的优先级?

根据插件怎么用?,这里提到的四种应用方式,如果插件使用冲突的话。其生效策略优先级是:

api & consumer > consumer > api > global

5. 插件的执行阶段?

插件的执行阶段贯穿于请求生命周期中的不同阶段,不过目前大多数的插件均运行在 access 以及之后的阶段。

6. 怎么写自己的插件?

==To be continued…==