前言
上一篇我们讲解了 Konga 的搭建和与 Kong 进行默认连接,本篇文章将讲一下如何在生产环境中基于验证的连接 Kong ,并详细讲解其中的参数。
前期准备
如果你需要在生产环境使用,那么你可以将 admin 端口只监听 127.0.0.1 ,然后通过 Kong 自己进行代理并增加效验。
首先,你可以通过默认方法连接上你的 Kong admin,这样方便进行配置。而后创建 Service。
Service ( 服务 )Service 是 Kong 对于服务的抽象概念。其本意为我们自定义的上游服务,可以通过 Kong 对路由的抽象( Route )来对一个请求进行转发或通过 Kong 的插件机制 ( Plugins )进行处理。
我们将在下文对 Route 和 Plugins 进行介绍。
下面我们将展示如何创建一个 Service。
属性详解:
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。( 关于怎么配置证书见下文 )我们来填写相关属性,建立一个新的服务。
创建成功后可以看到一个新列表,里面就有我们刚才创建的 kong-admin
接下来我们需要点击这个 Name,进入该 Service 的配置页面。
进入配置页面后我们会发现左边有一个选择栏,右边则是这个服务的详细配置。
左边选择栏讲解:
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 的路由
接下来,我们可以使用该域名访问 Kong admin 了。
Consumer ( 消费者 )为了配置 Kong 的插件,我们首先要了解什么是 Consumer 。 Consumer 代表服务的使用者或用户。 首先,我们创建一个 Consumer。
点击我们新建的 kong-admin 然后配置 Credentials 的 API KEYS。
点击 Create API KEY 来新建一个 key。
key – 密钥。如果为空则会自动生成一个。记住生成的密钥,待会儿会用。
Plugin ( 插件 )刚才我们已经成功创建了密钥,接下来我们就要配置权限登陆了。
我们选取之前提到的 Key Auth 来进行验权安全登陆。
首先,打开 Plugins 的页面。
添加一个 Key Auth 插件。
填写相关的参数。
属性详解:
consumer:用于区分 Kong 插件的消费者,为空则对应所有的消费者。 key names:key 的名称,可支持多个 key 。 hide credentials:是否隐藏凭据到上游 API 服务器。 anonymous:配置匿名访问者的 id 。 重启 Kong 容器经过这么多步骤的配置,现在我们我们已经对 Kong 的管理接口进行了验权。我们只需要重启 Docker 容器,使得其端口只监听内部的请求即可。
成功安全连接到 Kong现在,我们已经配置好了安全连接。当我们访问刚才测试的域名时会得到一个异常。
好,接下来我们配置 Konga 进行安全连接。选择 Key AUTH 的登陆方式。然后把刚才记录的密钥填上。
Name:连接名称 Loopback API URL:kong 的管理端口 URL。格式为 http://…. 或 https:// … API key:密钥现在我们已经使用安全连接成功的连接到 Kong 服务。
总结
本篇文章利用配置安全连接 Kong 服务来讲解了 Kong 的 Service、Route、Consumer 和 Key Auth 插件。
免责声明:文章内容来自互联网,本站不对其真实性负责,也不承担任何法律责任,如有侵权等情况,请与本站联系删除。
转载请注明出处:物联网网关神器 Kong ( 四 )- 利用 Konga 来配置生产环境安全连接 Kong https://www.yhzz.com.cn/a/12439.html