Kong中的名称概念解释#
Service:对应着后端的一个服务,或者是一个App。
Route:路由,不同的route对应着service中的不同接口。
Upstream:和nginx中的upstream擦不多,都对应着一组服务节点。
Target:对应着一个api服务节点。
# upstream 对应kong中的Upstream upstream default_backend { # server 对应着Kong中的一个target server 10.4.4.21:81 max_fails=3 fail_timeout=10s; server 10.4.4.22:81 max_fails=3 fail_timeout=10s; } server { server_name *.bairimeng.com; # location / 对应着Kong中的一个route location / { proxy_pass http://default_backend; proxy_set_header Host $http_host; proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for; } }
使用Konga添加一个服务#
添加upstream
往service中添加服务实例
添加service
给service添加后端真实的路由
验收访问:http://10.4.7.103:8000/serverAddr
10.4.7.103是kong所在机器的地址
8000是kong对外暴露的接受http请求的端口
如果service的path为/的话,访问路径则是:http://10.4.7.103:8000/serverAddr/serverAddr
Kong身份认证插件#
Basic Auth#
Kong支持针对Route和Service两种粒度添加Basic Auth认证的方式
比如你添加的Basic Auth插件后,可以去访问该路由去验收结果
需要输入用户名和密码之后才能访问。
这里的用户名密码其实就是Kong中的Consumer的Basic Auth的用户名密码。
Step1:创建Consumer
Step2:为第一步中创建的Consumer创建Basic Auth的用户名密码。
然后使用这个用户名和密码就能验证成功,成功访问该接口。
Jwt#
jwt的验证可以在service、route、consumer三个维度上添加。
例如下:
Step1:给单个route添加jwt验证
Step2:给想访问Step1中的route的Consumer添加Jwt凭证
注意记录上面的 key:bairimeng、secret:bairimeng-secret
Step3:使用key和secret签发密钥:https://jwt.io/
验证
1、如果没有执行上面的Step2的话,请求该接口返回值如下:
2、如果jwt非法的话,请求该接口返回值如下:
3、全部正常返回值如下:
Key Auth#
key auth 也是Kong提供的一种身份证的身份。
它会对url中的参数key为apikey的值进行校验,如果合法的话则方行。
apikey的具体值需要在consumer中添加
如果没有合法的key,将得到如下的返回值