经过了前面对 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…==