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 =true
和 upstream_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_path
或 request_host
。不要同时使用它们。
我已经成功安装了 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 =true
和 upstream_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_path
或 request_host
。不要同时使用它们。