授权验证
在接口请求中权限验证是一个恒久不变的话题,Kong 自带了6种加密方式
先创建一个 Basic Auth,直接确认即可
此时页面访问 http://dev.lyafei.com:8000/dev
会弹出登录框,让你输入用户名密码,若取消则会返回{"message":"Unauthorized"}
,若输入用户名和密码后确认会返回 {"message":"Invalid authentication credentials"}
,因为虽然开启了验证,但是还没有录入用户名和密码,Kong 里面有个 Consumer 的概念,需要增加一个Consumer
这个时候只有输入正确用户名和密码才能访问,这种方式在网页上用的比较多,时间有限,就不一一介绍了。
插件局部生效
通过上述配置的插件生效范围都是全局生效的,一般我们一个网关可能代理了N个 service 的入口,如果插件的生效范围只是全局,基本上就限制了使用范围,当然 Kong 的设计者考虑的比较周到,是否全局都可,Konga2.X 的版本可以在 UI 界面针对某个服务进行配置,低版本的 Konga 不支持,所以对于低版本的 Konga 来说,只能通过 Kong 的官方管理 API 的方式来创建只对于某个服务生效的插件。
如图设置后,这个 dev-service 对于的请求就一定要加密,不然会返回 {"message":"No API key found in request"}
,
需要加入配置的参数名和值才可以正常请求,而另外一个可以不用就可以正常调用,效果如下图
同时插件对应的范围和适用范围都能在 Konga 的插件管理中看出来
上游服务器负载
一般来说一个服务会有多个上游服务器,一般我们会采用一些开源的组件来去配置,Nginx 就可以做到,基于 Nginx 的 Kong 当然也做得到负载均衡
再去创建 service
最后创建 routes 之后,就实现了负载均衡的目的,效果如下:
curl dev.lyafei.com:8000
app1
curl dev.lyafei.com:8000
uat1
curl dev.lyafei.com:8000
app1
curl dev.lyafei.com:8000
uat1
curl dev.lyafei.com:8000
uat1