本篇详细记录了Kong的代理功能及其路由功能和内部工作。
Kong公开了几个可以通过两个配置属性进行调整的接口:
proxy_listen,默认8000,它定义Kong将接受来自客户端的公共流量并将其代理到您的上游服务的地址/端口列表。
admin_listen,默认8001,它还定义了一个地址和端口列表,但这些列表应该仅限于管理员访问,因为它们揭示了Kong的配置功能:Admin API
注意:从kong v0.13.0开始,API实体已被弃用。本文档将介绍新的路由和服务实体的代理。
一些术语client:指下游客户向Kong的代理端口发出请求。
upstream service:指自己的API /服务,位于Kong后面,客户请求被转发到该服务。
service:服务实体,顾名思义,是对自己的每个上游服务的抽象。服务的例子可以是数据转换微服务,账单API等。
route:这是指Kong Routes实体。路由是进入Kong的入口点,并为要匹配的请求定义规则,并路由到给定的Service。
plugin:这是指Kong的“插件”,它是在代理生命周期中运行的业务逻辑。可以通过ADMIN API配置插件 - 全局(所有传入流量)或特定的路由和服务。
从上层角度看,Kong在其配置的代理端口(默认情况下为8000和8443)上侦听HTTP流量。 Kong会根据你配置的路由评估任何传入的HTTP请求,并尝试找到匹配的路由。如果某个请求符合特定路由的规则,Kong将处理代理请求。由于每条路由都与一个服务链接,因此Kong将运行您在路由及其相关服务上配置的插件,然后向上游代理请求。
您可以通过Kong的Admin API管理routes,路由的hosts,paths和methods属性定义匹配传入HTTP请求的规则。
如果Kong收到无法匹配任何已配置路由的请求(或者没有配置路由),则它将以下列情况作出响应:
HTTP/1.1 404 Not Found Content-Type: application/json Server: kong/<x.x.x> { "message": "no route and no API found with those values" }