物联网网关神器 Kong ( 四 )- 利用 Konga 来配置生产环境安全连接 Kong

这把我C 2021-05-11 15:09:01 4970

物联网网关神器 Kong ( 四 )- 利用 Konga 来配置生产环境安全连接 Kong

前言

上一篇我们讲解了 Konga 的搭建和与 Kong 进行默认连接,本篇文章将讲一下如何在生产环境中基于验证的连接 Kong ,并详细讲解其中的参数。

前期准备

如果你需要在生产环境使用,那么你可以将 admin 端口只监听 127.0.0.1 ,然后通过 Kong 自己进行代理并增加效验。

首先,你可以通过默认方法连接上你的 Kong admin,这样方便进行配置。而后创建 Service。

Service ( 服务 )

Service 是 Kong 对于服务的抽象概念。其本意为我们自定义的上游服务,可以通过 Kong 对路由的抽象( Route )来对一个请求进行转发或通过 Kong 的插件机制 ( Plugins )进行处理。

我们将在下文对 Route 和 Plugins 进行介绍。

下面我们将展示如何创建一个 Service。

img.png

属性详解:

  • Name : 该服务的名称。
  • Description : 用于对自定义服务的描述。
  • Tags :为该服务打上标签,便于通过 tag 来区分。
  • Url :方便配置 protocol、host、port、path。
  • Protocol :使用 HTTP/HTTPS 连接被代理的服务。
  • Host :被代理服务的 host。
  • Port :被代理服务的端口。
  • Path : 被代理服务的路径。
  • Retries :代理请求失败重试几次。默认值为5秒。
  • Connect timeout :与代理服务建立连接超时时间。
  • Write timeout :与代理服务完成写请求的超时时间。
  • Read timeout : 与代理服务完成读请求的超时时间。
  • Client certificate :证书的id。( 关于怎么配置证书见下文 )

我们来填写相关属性,建立一个新的服务。

img_1.png

创建成功后可以看到一个新列表,里面就有我们刚才创建的 kong-admin

img_2.png

接下来我们需要点击这个 Name,进入该 Service 的配置页面。

img_3.png

进入配置页面后我们会发现左边有一个选择栏,右边则是这个服务的详细配置。

左边选择栏讲解:

  • Service details : 服务的详细配置。
  • Routes : 该服务的路由。
  • Plugins : 该服务所使用的插件。
  • Eligible Consumers : 适用于 ACL Kong 插件。( 具体用法日后再进行讲解 )
Route ( 路由 )

Route 是 Kong 对于服务路由的抽象。其功能类似于 Nginx 中的 location 结构块。

下面我们将展示如何创建一个 Route

属性详解:

  • Name:Route 的名字
  • Tags:为该路由打上标签,便于通过 tag 来区分。
  • Hosts:路由所匹配的域名,可填写多个。( 填写后要按回车才会记录数据 )
  • Paths:路由所匹配的域名的路径。
  • Headers:路由所匹配 HTTP 请求 header 内携带的参数。
  • Path handling:用于控制代理服务的时候如何转发请求路径。( 值为 V0、V1 )

V0 - 其主要实现的为:

请求 /user => 路由的 path /a 则最后会被组合为 /a/user

V1 - 其主要实现为:

请求 /user => 路由的 path /a 则最后被组合为 /auser

  • Https redirect status code:当匹配到路由后如果协议不符合,则 Kong 会主动响应该状态吗。默认为426。
  • Regex priority:正则匹配的优先级。在使用正则做路由匹配的时候会利用该标志使用优先级最高的。

如果路由匹配,且 Regex priority 也相同,则会按照最早创建的规则来匹配。

  • Methods:HTTP 请求方法。如 GET 、POST 、PATCH 、PUT
  • Strip Path:是否删除路由所匹配的路径。

例如路由的规则为 /a,请求为 /a/user。 则当 Kong 接受到该请求在转发时会将该路径改变为 => /user

  • Preserve Host:是否将请求端的 host 保留
  • Protocols:接受的协议。 HTTP 或 HTTPS
  • SNIs:使用 Socket 路由时,与此路由匹配的SNI列表。 使用tcp或tls协议时,必须设置SNIs,源或目标之一。
  • Sources:使用 Socket 路由时,与此路由匹配的传入连接的 IP 源列表。其格式为 IP:PORT。
  • Destinations:使用 Socket 路由时,与此路由匹配的目标连接的 IP 源列表。其格式为 IP:PORT。

现在我们创建了一个 Service 的路由

img_6.png

接下来,我们可以使用该域名访问 Kong admin 了。

img_7.png

Consumer ( 消费者 )

为了配置 Kong 的插件,我们首先要了解什么是 Consumer 。 Consumer 代表服务的使用者或用户。 首先,我们创建一个 Consumer。

img_11.png

img_12.png

点击我们新建的 kong-admin 然后配置 Credentials 的 API KEYS。

img_13.png

点击 Create API KEY 来新建一个 key。

img_15.png

  • key - 密钥。如果为空则会自动生成一个。

记住生成的密钥,待会儿会用。

img_16.png

Plugin ( 插件 )

刚才我们已经成功创建了密钥,接下来我们就要配置权限登陆了。

我们选取之前提到的 Key Auth 来进行验权安全登陆。

首先,打开 Plugins 的页面。

img_8.png

添加一个 Key Auth 插件。

img_9.png

填写相关的参数。

img_17.png

属性详解:

  • consumer:用于区分 Kong 插件的消费者,为空则对应所有的消费者。
  • key names:key 的名称,可支持多个 key 。
  • hide credentials:是否隐藏凭据到上游 API 服务器。
  • anonymous:配置匿名访问者的 id 。
重启 Kong 容器

经过这么多步骤的配置,现在我们我们已经对 Kong 的管理接口进行了验权。我们只需要重启 Docker 容器,使得其端口只监听内部的请求即可。

成功安全连接到 Kong

现在,我们已经配置好了安全连接。当我们访问刚才测试的域名时会得到一个异常。

img_18.png

好,接下来我们配置 Konga 进行安全连接。选择 Key AUTH 的登陆方式。然后把刚才记录的密钥填上。

img_19.png

  • Name:连接名称
  • Loopback API URL:kong 的管理端口 URL。格式为 http://.... 或 https:// ...
  • API key:密钥

img_20.png

现在我们已经使用安全连接成功的连接到 Kong 服务。

总结

本篇文章利用配置安全连接 Kong 服务来讲解了 Kong 的 Service、Route、Consumer 和 Key Auth 插件。

声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
红包 93 8 评论 打赏
评论
0个
内容存在敏感词
手气红包
    易百纳技术社区暂无数据
相关专栏
置顶时间设置
结束时间
删除原因
  • 广告/SPAM
  • 恶意灌水
  • 违规内容
  • 文不对题
  • 重复发帖
打赏作者
易百纳技术社区
这把我C
您的支持将鼓励我继续创作!
打赏金额:
¥1易百纳技术社区
¥5易百纳技术社区
¥10易百纳技术社区
¥50易百纳技术社区
¥100易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-专栏模块

审核失败

失败原因
备注
拼手气红包 红包规则
祝福语
恭喜发财,大吉大利!
红包金额
红包最小金额不能低于5元
红包数量
红包数量范围10~50个
余额支付
当前余额:
可前往问答、专栏板块获取收益 去获取
取 消 确 定

小包子的红包

恭喜发财,大吉大利

已领取20/40,共1.6元 红包规则

    易百纳技术社区