gpt4 book ai didi

NgInx 作为与 Kong 的反向代理

转载 作者:行者123 更新时间:2023-12-04 15:52:06 28 4
gpt4 key购买 nike

我想使用 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 它会导致 Kong 的消息说没有与给定值匹配的 api,这是正确的,因为主机名不是 example.com

我已经关注这个问题很久了,但一直没能解决。我也在找 https://getkong.org/docs/0.10.x/configuration/#custom-nginx-configuration-embedding-kong但我不确定是否必须这样做,因为我已经有了自己的 nginx 配置。

提前感谢您的反馈。

最佳答案

您需要告诉 NGINX 将 Host header 上游转发到 Kong。你可以用 proxy_set_header 做到这一点像这样:

location /api {
proxy_pass: http://kong;
proxy_set_header Host $host;
}

关于NgInx 作为与 Kong 的反向代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44959569/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com