You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kong在8000端口开启HTTP2后HTTP访问报错,是否需分端口部署HTTP与HTTP2?

问题解答

核心结论

HTTP/2 与 HTTP/1.x 不需要拆分到不同端口启用,你遇到的报错是端口监听配置规则导致的,和协议本身的兼容性无关。

问题原因

你当前的配置 KONG_PROXY_LISTEN=0.0.0.0:8000 http2 会强制8000端口仅接收明文HTTP/2(h2c)请求,不会自动兼容HTTP/1.x协议:

  • gRPC默认走HTTP/2协议,所以请求可以正常响应
  • 你用默认发送HTTP/1.1请求的curl访问时,服务端直接返回HTTP/2二进制帧,curl无法识别为普通文本内容,就会抛出你看到的二进制输出警告。

解决方案

你可以根据业务场景任选一种方案处理:

  • 方案1:同端口同时兼容HTTP/1.x和HTTP/2
    调整监听配置,开启TLS和ALPN协议协商:
    KONG_PROXY_LISTEN=0.0.0.0:8000 http2 ssl
    
    该配置下TLS握手时会自动根据客户端支持的协议,选择使用HTTP/1.x或HTTP/2,无需修改客户端请求逻辑。
  • 方案2:拆分端口分别承载不同协议
    分别给普通HTTP服务、gRPC/HTTP2服务分配独立端口:
    KONG_PROXY_LISTEN=0.0.0.0:8000, 0.0.0.0:8001 http2
    
    后续普通HTTP请求走8000端口,gRPC/HTTP2请求走8001端口即可。
  • 方案3:保留当前配置,客户端主动声明HTTP/2协议
    无需调整Kong配置,所有访问8000端口的客户端主动指定使用HTTP/2协议即可,比如curl请求添加--http2参数:
    curl --http2 -X POST localhost:8000/httptest
    

内容的提问来源于stack exchange,提问作者javadev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 17:15:04