问题标签 [kong]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
930 浏览

cassandra - 启动 Kong 时 Cassandra 的问题

尝试启动Kongkong start出现以下错误消息:

这是为什么?

0 投票
4 回答
590 浏览

cassandra - Kong:在 Mac OS X 上运行 Mashape Kong 失败

今天我在我的 Mac OS X (Yosemite 10.10.5) 上安装了Kong (API 管理层)。我使用了此处提供的 .pkg 文件。我按照安装说明进行操作,一切都成功了。

我还使用 Cassandra 主页上提供的信息安装了 Cassandra。

但是当我启动 Kong 时,使用以下命令:

它抛出以下错误:

0 投票
1 回答
1240 浏览

amazon-web-services - 如何在 AWS 上的 ELB 后面部署 API 管理器并保留 X-Forwarded 标头?

我在 AWS 上部署了一些 RESTfull API,主要是在 Elasticbeanstalk 上。

我的公司正在逐渐采用微服务架构,因此,我想开始以更专业和自动化的方式管理这些 API。因此,我想采用某种 API Manager 来提供标准功能,例如路由和发现。

另外,我希望使用这样的 API Manager 将我的一些 API 公开到 Internet。管理器将仅通过 SSL 暴露于 Internet,并且在将外部消费者的请求路由到内部 API 之前,应该需要某种形式的身份验证。对于我的用例,每个请求的 Authorization 标头中的简单 API 密钥就足够了。

我目前正在考虑将两种产品作为 API 管理器:WSO2 和 Kong。前者是托管在 Github 上的一个有点新的开源项目。

在我正在考虑的所有部署场景中,API 管理器都必须部署在 AWS EC2 实例上。此外,它们必须至少部署在两个不同的可用区和弹性负载均衡器 (ELB) 后面,以便为托管 API 提供高可用性。

我的大多数 API 都遵守 HATEOAS 约束。因此,他们的许多 JSON 响应都包含指向其他资源的链接,这些资源必须根据原始请求动态构建。

例如:

如果用户通过公开的 API Manager 从 Internet 发送请求,则 URL 如下所示: https ://apimanager.mycompany.com/accounts/123

因此,用户应该会收到一个 JSON 响应,其中包含一个 Account 资源,其中包含一个指向订阅资源的链接。链接 URL 应基于原始请求的协议、主机和端口,因此应如下所示:https://apimanager.mycompany.com/subscriptions/789

为了满足上面提到的动态链接生成要求,我的 API 依赖于 X-Forwarded-Proto、X-Forwarded-Host 和 X-Forwarded-Port HTTP 标头。这些应该包含协议(http 或 https)、主机名和消费者在原始请求中使用的端口,不管请求通过了多少代理。

但是,我注意到当请求通过 ELB 时,X-Forwarded-Proto 和 X-Forwarded-Port 标头更改为引用请求通过的最后一个 ELB 的值,而不是原始请求中的值。

例如:如果原始请求通过 HTTPS 到达 API Manager,Manager 通过 HTTP 将请求转发到内部 API;因此,当请求到达第二个 ELB 时,ELB 会将 X-Forwarded-Proto 标头更改为“http”。结果,X-Forwarded-Proto 标头的原始“https”值丢失。因此,API 无法在 URL 中使用“https”协议建立正确的链接。

显然,ELB 不能配置为以任何其他方式运行。我在 AWS 的文档中找不到任何可能影响此行为的设置。

此外,似乎没有比 AWS 的 ELB 更好的替代品了。如果我选择使用 HAProxy 等其他产品,或者通过 API Manager 本身进行负载平衡,我将不得不将其安装在常规 EC2 实例上,因此会产生单点故障。

我包括一个非正式的图表,以更好地表达我的观点。

图表

此外,我找不到任何有关 WSO2 或 Kong 部署方案的相关讨论,这些讨论将以任何方式解决这些问题。我不清楚这些产品应该如何与 AWS 的 ELB 相关联。

非常欢迎有类似环境的其他人发表评论。

谢谢你。

0 投票
1 回答
295 浏览

restful-url - Kong 能否以参数化形式返回您的 RESTful API 请求?

我知道它需要restful api,我们可以在上面添加一些插件,但为了我的目的,我需要getkong服务器的参数化形式的API?这可能吗?如果是,请告诉我我们如何实现这一目标?

0 投票
1 回答
610 浏览

java - 我可以将来自 Kong 服务器的请求转发到我自己的 servlet 吗?

我将我的 api 添加到 Kong 之类的

目标 url 是我在 apache tomcat 上运行的 servlet

当我试图验证 kong 是否像我的 servlet 一样

它无法识别资源。它不应该击中我的servlet吗?

0 投票
1 回答
625 浏览

lua - 设置 Kong 开发环境失败

我正在尝试建立Kong的开发环境。我在我的机器上安装了 Kong & cassandra 并且能够运行 Kong Fine。我在尝试设置开发环境时遇到问题。

首先,我尝试了这里提到的 Source Install 。

问题1

在克隆 Kong github repo 的目录中执行sudo make install给了我以下消息:-

之后执行sudo make dev失败并出现以下错误:-

然后我尝试了同样失败的 vagrant install 。

第 2 期

执行以下命令后:-

我收到以下错误:-

有人可以让我知道出了什么问题吗?

环境

  • 卢阿 - 5.2.0
  • Ubuntu 12.04 LTS - 64 位
0 投票
2 回答
1876 浏览

nginx - Kong 拒绝将自定义插件识别为已启用

我正在为 Kong 开发一个自定义插件。

首先,我遵循本教程中列出的指南

http://streamdata.io/blog/developing-an-helloworld-kong-plugin/

由于我在 2.8.0-1 版本中遇到的编译问题,我在此过程中所做的一些更改是将 Rockspec 文件中“lrexlib-pcre”的依赖关系从版本 2.8.0-1 更改为 2.7.2-1。请注意,我在下一个分支工作。主分支列出了 2.7.2-1 版本。

本教程假定 Kong 版本为 0.4.2-1,而我使用的是 Kong 版本 0.5.2-1。

我已经在 kong.yml 中列出了我的插件。最后列出的是 helloworld 插件

我最后在 rockspec 文件中列出了 helloworld 文件。

["kong.plugins.helloworld.handler"] = "kong/plugins/helloworld/handler.lua", ["kong.plugins.helloworld.access"] = "kong/plugins/helloworld/access.lua", [" kong.plugins.helloworld.schema"] = "kong/plugins/helloworld/schema.lua"

编译成功,但 kong 拒绝列出节点中可用的 helloworld 插件。所有其他内置插件在服务器中显示为可用

无论如何,我尝试使用模拟 api 启用插件。它无法按预期工作并尝试重新启动 kong 列表错误

nginx:[错误] [lua] init_by_lua:5:启动错误:/usr/local/share/lua/5.1/kong.lua:82:您正在使用配置中未启用的插件:helloworld [INFO] dnsmasq 停止 [ERR] 无法启动 Kong

我知道在 Kong 0.5 版中引入了一些重大变化。我关注了更改日志,但没有发现任何帮助。

我是否缺少在某处设置配置?

任何帮助,将不胜感激。

0 投票
1 回答
47 浏览

dns - 域名设置中的子 URL 问题

我在我们的一台服务器上托管了一个 Kong Gateway 应用程序,它为我们提供了一个带有公共 IP 111.92.xx.xx 的输出 url

http://111.92.xx.xx:8000

而且我有不同的子网址,例如

http://111.92.xx.xx:8000/ABC

http://111.92.xx.xx:8000/ABC?find= {bla,bla,bla}

http://111.92.xx.xx:8000/XYZ/findOne?access_token=ksdgasdgausygdasj

这工作正常且随处可访问。

现在我想为我的 ip "111.92.xx.xx:8000" 添加一个域名

那么我的网址可能是

http://exmaple.com

http://exmaple.com/ABC

http://exmaple.com/ABC?find= {bla,bla,bla}

http://exmaple.com/XYZ/findOne?access_token=ksdgasdgausygdasj

我已经与我的网络管理员核对并为此添加了 DNS 设置,但现在我只能像这样访问主 url “ http://exmaple.com:8000

而且我无法访问子 URL,如果我需要访问子 URL,我需要传递主机标头,例如“主机:111.92.xx.xx”。

我们在 DNS 设置中尝试了不同的选项,例如 URL 重定向、添加 A 或 CNAME 记录...但仍然无法正常工作

那么如何解决这个问题呢?我们可以在 DNS 设置或 myserver 中做一些事情吗?我必须进行一些更改吗?

0 投票
2 回答
2522 浏览

sass - 在物化 css 中更改原色

我正在尝试使用 kong 仪表板(https://github.com/PGBI/kong-dashboard)。我想通过使用另一个 SCSS 文件来更改使用 GULP JS 实现的原色。我不想更改由 bower 或 npm 拉出的 _variables.scss。

有任何想法吗?

0 投票
2 回答
332 浏览

kong - 香港基础设施

我有一个非常笼统的问题,我找不到关于 Kong 的答案。我在官方文档中找不到对建议的整体架构的正确描述。特别是,我不清楚它应该如何与消费者注册一起工作。

  • 创建消费者的调用看起来是公开的,所以任何人都可以创建一个,这将取决于我的上游服务来了解该用户是否真的是我的一个或某个随机用户

  • 假设我想使用 JWT auth 插件,那么当用户注册时,我应该给他自己的秘密,以便他能够计算他的令牌。我的意思是,我的服务知道一个新用户正在注册,并且应该查询 kong 以获取有关他的秘密的信息。在这个过程中,我清楚地看到了我的用户的秘密,这是应该的方式吗?