微服务 API 网关 Kong 代理中文文档

原文链接: https://docs.konghq.com/1.1.x/proxy/ (不能保证所有的翻译都是准确无误的,所有如有翻译的不准确或错误之处,请一定记得查看原文,并欢迎留言指出)。 代理 简介 在本文档中,我们将通过详细解释其路由功能和内部工作原理,来了解Kong的代理功能。 Kong公开了几个可以通过两个配置属性调整的接口: proxy_listen:它定义了一个地址/端口列表,Kong将接受来自客户端的公共流量并将其代理到您的上游服务(默认为8000)。 admin_listen:它还定义了一个地址和端口列表,但是这些应该被限制为仅由管理员访问,因为它们暴露了Kong的配置功能:Admin API(默认为8001)。 注意:从1.0.0开始,API实体已被删除。本文档将介绍使……

阅读全文 »

Lua OpenResty 使用rabbitmq AMQP协议发送和接收消息

如果想要在openresty中使用AMQP协议发送和接收消息的话,需要使用到一个第三方库。地址为:https://github.com/mengz0/amqp 。 当然,首先你得在自己的环境中安装一个rabbitmq,或者使用远程的rabbitmq也可以。 openresty也是要安装一下的,这里就不啰嗦了。 第一步:安装第三方库 luarocks install amqp 如果没有安装 luarocks 可以安装一下luarocks。 第二步:使用amqp发送&接收消息 可以直接参考https://github.com/mengz0/amqp 中的例子,但是这个库的例子写的非常简略,导致很多参数需要你自己去源码中查看,我在这个例子中列举了一些常用的参数,可以参考使用一下。 发送消息……

阅读全文 »

在 lua 中使用 protobuf

安装protobuf 具体步骤可以参考官方文档https://github.com/protocolbuffers/protobuf/blob/master/src/README.md 这里只列出一些其中比较的重要的步骤。 先安装一些依赖的库 sudo apt-get install autoconf automake libtool curl make g++ unzip 然后下载需要的安装包 curl -L -o protobuf-all-3.6.1.tar.gz https://github.com/protocolbuffers/protobuf/releases/download/v3.6.1/protobuf-all-3.6.1.tar.gz 接着解压 tar -xzvf pro……

阅读全文 »

微服务 API 网关 Kong 插件开发 – 插件配置

原文地址:https://docs.konghq.com/1.1.x/plugin-development/plugin-configuration/(不能保证所有的翻译都是准确无误的,所有如有翻译的不准确或错误之处,请一定记得查看原文,并欢迎留言指出)。 简介 大多数情况下,您的插件可以配置为满足您的所有用户需求。当插件被执行的时候,您的插件的配置存储在Kong的数据存储区中,以检索它并将其传递给handler.lua方法。 配置由Kong中的Lua表组成,我们称之为 schema。它包含用户在通过Admin API启用插件时将设置的键/值属性。Kong为您提供了一种验证用户插件配置的方法。 当用户向Admin API发出请求以启用或更新给定Service,Route和/或Consumer……

阅读全文 »

微服务 API 网关 Kong 插件开发 – 文件结构

原文地址:https://docs.konghq.com/1.1.x/plugin-development/file-structure/ (不能保证所有的翻译都是准确无误的,所有如有翻译的不准确或错误之处,请一定记得查看原文,并欢迎留言指出)。 本章假定你已经会使用Lua语言 介绍 将您的插件视为一组Lua模块。本章中描述的每个文件都被视为一个单独的模块。如果他们的名字遵循这个约定,Kong将检测并加载你的插件的模块: kong.plugins.<plugin_name>.<module_name> 您的模块当然需要通过package.path变量访问,可以通过lua_package_path配置属性调整您的需求。但是,安装插件的首选方法是通过LuaRocks,它与……

阅读全文 »

微服务 API 网关 Kong 插件开发 – 安装/卸载插件

原文地址:https://docs.konghq.com/1.1.x/plugin-development/entities-cache/ (不能保证所有的翻译都是准确无误的,所有如有翻译的不准确或错误之处,请一定记得查看原文,并欢迎留言指出)。 介绍 Kong的自定义插件由Lua源文件组成,这些源文件需要位于每个Kong节点的文件系统中。本指南将为您提供逐步说明,使Kong节点了解您的自定义插件。这些步骤应该应用于Kong集群中的每个节点,以确保每个节点上都有自定义插件。 打包源 您可以使用常规打包策略(例如tar),也可以使用LuaRocks包管理器为您执行此操作。我们推荐使用LuaRocks,因为它在使用其中一个官方分发包时与Kong一起安装。 使用LuaRocks时,您必须创建一个r……

阅读全文 »

微服务 API 网关 Kong 插件开发 – 缓存自定义实体

原文地址:https://docs.konghq.com/1.1.x/plugin-development/entities-cache/ (不能保证所有的翻译都是准确无误的,所有如有翻译的不准确或错误之处,请一定记得查看原文,并欢迎留言指出)。 介绍 您的插件可能需要经常访问每个请求 和/或 响应的自定义实体(在前一章中可见)。通常,加载它们一次并将它们缓存在内存中会显着提高性能,同时确保数据存储区不会因负载增加而受到压力。 考虑一个api-key身份验证插件,需要在每个请求上验证api-key,从而在每个请求中从数据存储区加载自定义凭据对象。当客户端提供api-key以及请求时,通常你会查询数据存储区以检查该密钥是否存在,然后,阻止请求或检索 Consumer ID以识别用户,这将在每个……

阅读全文 »

微服务 API 网关 Kong 插件开发 – 实现自定义逻辑

简介 Kong插件允许您在 request/response 的生命周期中的几个入口点注入自定义逻辑(使用 Lua 语言),因为它由Kong代理。为此,必须实现base_plugin.lua 接口的一个或多个方法。这些方法将在命名空间下的模块中实现:kong.plugins。<plugin_name> .handler。 Module kong.plugins.<plugin_name>.handler 可用的请求上下文 插件接口允许您覆盖handler.lua文件中的以下任何方法,以在Kong的执行生命周期的各个入口点实现自定义逻辑: 函数名 LUA-NGINX-MODULE Context 描述 :init_worker() init_worker_by_lua ……

阅读全文 »

在Kong的插件中使用自建数据表的问题

目前正在开发的kong 插件中需要用到自己新建表,然后对其进行读写,但是由于kong的版本升级原因,有一些问题在官方文档中没有提到,导致一直读取失败,主要注意的点如下: 1.迁移文件的差异 kong的版本>= 1.0 迁移文件的名字为000_base_xxx.lua,其中格式格式如下: return { postgres = { up = [[ CREATE TABLE IF NOT EXISTS "xxxxx" ( "id" uuid NOT NULL DEFAULT uuid_generate_v4() PRIMARY KEY, "xx" int NOT NULL, "xx" bool, "xx" json, "xx" json ); ]], }, cassandra ={ up ……

阅读全文 »

微服务 API 网关 Kong 插件开发 – 访问数据存储区

原文地址:https://docs.konghq.com/1.1.x/plugin-development/access-the-datastore/ (不能保证所有的翻译都是准确无误的,所有如有翻译的不准确或错误之处,请一定记得查看原文,并欢迎留言指出)。 简介 Kong通过我们称为“DAOs”的类与模型层交互。本章将详细介绍与数据存储交互的可用API。Kong支持两个主数据存储:Cassandra 3.x.x和PostgreSQL 9.5+。 kong.db Kong 的所有实例表示为: 描述实体在数据存储区中与哪个表相关的模式,对其字段的约束,如外键,非空约束等…此schema是插件配置章节中描述的表。 DAO类的一个实例映射到当前正在使用的数据库(Cassandra或Po……

阅读全文 »

微服务 API 网关 Kong 插件开发 – 存储自定义实体

原文地址:https://docs.konghq.com/1.1.x/plugin-development/custom-entities/ (不能保证所有的翻译都是准确无误的,所有如有翻译的不准确或错误之处,请一定记得查看原文,并欢迎留言指出)。 介绍 虽然不是所有插件都需要它,但是您的插件可能需要在数据库中存储比配置更多的东西。在这种情况下,Kong在其主要数据存储之上提供了一个抽象,允许您存储自定义实体。 如前一章节访问数据存储区所述。Kong通过我们称之为“DAOs”的类与模型层交互,并且可以在通常被称为“DAO Factory”的单例上使用。本章将解释如何为您自己的实体提供一个抽象体。 Modules kong.plugins.<plugin_name>.daos ko……

阅读全文 »

openSSL 的加密方式与证书制作

openSSL是什么 OpenSSL项目是安全套接字层(secure sockets layer,SSL)和传输层安全(transport layer security,TLS)协议的一个实现,是大家共同努力开发出的代码可靠、功能齐全、商业级别的开源工具集。除了OpenSSL之外的其他TLS实现方式,如GnuTLS、Mozilla的网络安全服务(NSS)和Windows平台的TLS。 项目由遍布世界的志愿者所组成的社区进行管理,他们通过互联网进行沟通、计划和开发OpenSSL工具集以及相关的文档。现在几乎所有的服务器软件和很多客户端软件都在使用OpenSSL,其中基于命令行的工具是进行密钥、证书管理以及测试最常用到的软件了。 公钥算法与私钥算法 私钥算法 私钥加密算法,又称 对称加密算法,因……

阅读全文 »