一.前言
很久没更新博客内容了~,之前一直想看Api网关的开源框架Kong,但是奈何各种事情打扰也没静下心来学习。不知道是什么缘故,之前总感觉Kong很难,入门门槛高。不过经过这几天的学习,发现和学习一个Nginx也没太多区别。可能人对自己未知的事物总是抱有一种恐惧感吧。今天分享记录一下Kong插件开发的基本流程。
二.原理分析
Kong本身就是一个Lua包,并且是在Openresty的基础之上做了一层封装的应用。归根结底就是利用Lua嵌入Nginx的方式,赋予了Nginx可编程的能力,这样以插件的形式在Nginx这一层能够做到无限想象的事情。例如限流、安全访问策略、路由、负载均衡等等。那其实编写一个Kong插件,就是按照Kong插件编写规范,写一个自己自定义的Lua脚本,然后加载到Kong中,最后引用即可。
官方文档参考: Plugin Development - Introduction - v2.7.x | Kong Docs
三.基本步骤与演示
1.插件功能简介
该插件防止客户端通过ip地址或者其他非法域名对Kong进行访问,否则返回自定义HTTP响应状态码(默认: 403)和消息内容(Access Forbidden)。
插件源码Github地址: https://github.com/dream-mo/kong-plugin-ip-access-forbidden
2.操作与开发步骤
1.在/usr/local/share/lua/5.1/kong/plugins路径下创建插件目录 ip-access-forbidden
2.必须存在至少2个文件:
1.handler.lua
业务的主核心逻辑代码编写.
2.schema.lua
定义参数校验、参数格式限制参数的传递合法性,handler.lua可以从中获取到注入的插件参数.
3.修改/etc/kong/kong.conf配置文件,加载ip-access-forbidden插件
plugins = bundled,ip-access-forbidden
4.重启kong或者reload kong
kong restart
kong prepare && Kong reload
5.访问加载插件是否正常
6.通过Konga界面配置插件
7.访问测试