Kong 为已注册的 APIS 返回 404

Kong returning 404 for Registered APIS

我已经成功安装了 Kong,并通过 Kong 提供的管理服务映射了一个 API,如下所示: http://kong:8001/apis payload: { "upstream_url": "http://test.suraj.com:9110/" "strip_request_path": true "request_path": "/services_test" "preserve_host": false "name": "services_test" "request_host": "test.suraj.com" }

我可以在调用 http://kong:8001/apis 时得到这个 API。

现在我正在尝试使用 kong 访问我的 API 端点,例如: http://kong:8000/services_test/test.json 它返回 404“找不到请求的资源”。

我做错了什么? 我无法访问 kong 的日志。谁能告诉我 kong 在哪里存储日志文件? 谢谢你的帮助。 PS:所有 URL 都是虚拟的。

终于,我得到了答案。

我做错的是设置 strip_request_path 属性 为真。
通过在 API 上启用 strip_request_path 属性,将在上游请求中不包含 request_path 属性 的情况下代理请求。

在我的例子中,实际 API 端点是:

http://test.suraj.com:9110/services_test/test.json

Kong 将请求重定向到:

http://test.suraj.com:9110/test.json

因为 strip_request_path 属性 是真的。

这是文档中关于 How does Kong route a request to an API

的内容

更多信息来自 google group

strip_request_path 的工作原理如下: 假设 strip_request_path =trueupstream_url"= "http://test.suraj.com:9110/"request_path= "/services_test"

然后 :

  • test.suraj.com/services_test/test.json 将映射到 http://test.suraj.com:9110/test.json

  • test.suraj.com/whatever/test.json 将 return 404.

如果 request_path 是您实际端点的一部分,您必须将 strip_request_path 属性 设置为 false。否则将 strip_request_path 更改为其他内容,例如 services123。那么您的请求 url 应该如下所示:

test.suraj.com/services123/services_test/test.json

然后 kong 将在以下端点转发此请求:

http://test.suraj.com:9110/services_test/test.json

使用 request_pathrequest_host。不要同时使用它们。