如何在 Kong 插件中使用 ngx.location.capture() 和 proxy_pass 进行请求?

我正在编写一个 Kong 插件。当我收到一个带有令牌的请求时,我想请求外部服务来验证令牌。我读到了可以使用 location_capture 和 proxy_pass 来进行外部 HTTP 请求。

我不确定应该如何操作。我在 nginx_kong.lua 文件中添加了

location = /reqbin { proxy_pass https://requestb.in/yn3pykyn; }

这是应该放哪里?

在我的插件代码中,我有:

res = ngx.location.capture("/reqbin", {method=ngx.HTTP_POST, args=args})

但当我使用 curl 向 Kong 发送请求时,请求直接发送到 upstream_url,并且我可以知道我的 requestbin 没有被击中。我做错了什么?

编辑: 当前的 res 也具有:

状态: 500

正文: nil

标头: Content-Type: text/plain, Server: kong/0.10.3

截断: true

点赞
用户4325141
用户4325141

有一个很好的库可以帮助您进行此请求: https://github.com/pintsized/lua-resty-http 我一直在使用它进行相同的用途,效果非常好。

2018-05-01 20:31:01