我想使用Kong作为我的API网关,在Docker容器中运行。每个请求必须首先通过NgInx服务器,如果请求的uri与example.com/api匹配,则必须生成在Kong内注册的api。
为实现这一目标,我已使用以下命令将我的API添加到Kong:
curl -i -X POST --url ipnumber:8001/apis -d 'name=my-api' -d `enter code here`'upstream_url=http://httpbin.org' -d 'hosts=example.com' -d 'uris=/api/my-api'
通过执行以下命令,我得到正确的答案,所以我认为Kong正常工作。
curl -i -X GET --url ipnumber:8000/api/my-api --header 'Host: example.com'
我的NgInx配置如下所示:
upstream kong {
server 127.0.0.1:8000;
}
location /api {
proxy_pass: http://kong;
}
在我的主机文件中,我已使用域example.com配置了NgInx服务器的IP。
问题是:当我浏览example.com/api/my-api甚至是example.com/my-api时,结果是NgInx的404错误页面。
当我浏览到ipnumber:8000 / api / my-api时,它会显示一条消息,表示没有api匹配给定的值,这是正确的,因为主机名不是&example.com
我已经很长时间没有找到这个问题,但我无法修复它。我也期待https://getkong.org/docs/0.10.x/configuration/#custom-nginx-configuration-embedding-kong,但我不确定我是否必须这样做,因为我已经拥有了自己的nginx配置。
提前感谢您的反馈。
答案 0 :(得分:1)
你需要告诉NGINX将Host头向上游转发给Kong。您可以使用proxy_set_header
执行此操作:
location /api {
proxy_pass: http://kong;
proxy_set_header Host $host;
}