加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > Nginx > 正文

NgInx作为Kong的反向代理

发布时间:2020-12-13 21:36:54 所属栏目:Nginx 来源:网络整理
导读:我想使用Kong作为我的API网关,在Docker容器中运行.每个请求必须首先通过NgInx服务器,如果请求的uri与example.com/api匹配,则必须生成在Kong内注册的api. 为此,我使用以下命令将我的API添加到Kong: curl -i -X POST --url ipnumber:8001/apis -d 'name=my-ap

我想使用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配置.

提前感谢您的反馈.

最佳答案
你需要告诉NGINX将Host头向上游转发给Kong.您可以使用proxy_set_header这样做:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读