我已成功安装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:所有网址都是虚拟的。
答案 0 :(得分:3)
终于得到了答案。我在这里做错了是设置" 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
答案 1 :(得分:2)
使用request_path
或request_host
。不要同时使用它们。
答案 2 :(得分:1)
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
将返回404。
如果request_path是实际端点的一部分,则必须将strip_request_path属性设置为false。否则将strip_request_path更改为其他内容,例如services123
。那么您的请求网址应如下所示:
test.suraj.com/services123/services_test/test.json
然后kong将在下面的终点转发此请求:
http://test.suraj.com:9110/services_test/test.json