Kong - 通过 HTTP/2 连接到上游

Posted

技术标签:

【中文标题】Kong - 通过 HTTP/2 连接到上游【英文标题】:Kong - connect to upstream via HTTP/2 【发布时间】:2020-09-29 16:56:35 【问题描述】:

我尝试解决这个用例:

    浏览器客户端通过 HTTP/2 连接到 Kong API 网关。 Kong 将 HTTP/2 连接代理到后端微服务并保持打开状态。 用例结果应该是,客户端通过 HTTP/2 与微服务连接。

看来,Kong 接受来自客户端的 HTTP/2 调用,而不是通过普通 HTTP 调用微服务。

这种情况有什么解决办法吗?我知道在 gRPC 案例中,Kong 应该能够与上游保持连接。

docker compose 中的设置:

#In docker-compose.yml
....
# I call running container at localhost:9081 with http2
KONG_PROXY_LISTEN: 0.0.0.0:9081 http2, 0.0.0.0:9082 http2 ssl

kong 配置文件中的设置(使用 DBless)

#In Kong.yml
services:
  - name: target-service
  host: target-api-test #docker container name
  port: 9000
  routes:
    - name: target-api-route
      paths:
        - /microservice-api

【问题讨论】:

【参考方案1】:

我认为这主要是因为 nginx 不支持指定 here 的上游服务器的 HTTP/2。

问:你们会在上游也支持 HTTP/2,还是只在客户端支持 HTTP/2?

A:目前,我们仅在客户端支持 HTTP/2。您不能使用 proxy_pass 配置 HTTP/2。

【讨论】:

以上是关于Kong - 通过 HTTP/2 连接到上游的主要内容,如果未能解决你的问题,请参考以下文章

代理到 Node/Express 上游时不常见的 NGINX 错误/超时(连接到上游时上游超时)

nginx:连接到上游时连接()失败(111:连接被拒绝)

微服务Kong——认证参考

Kong 入门指南 - 通过Kong Gateway公开您的服务

Kong 入门指南 - 通过Kong Gateway公开您的服务

在连接到上游客户端时负载平衡没有实时上游