为什么 HAProxy 将 HTTP2 请求作为 HTTP 1.1 转发?

为什么 HAProxy 将 HTTP2 请求作为 HTTP 1.1 转发?

我正在尝试使用 HAPoxy 在两台服务器之间配置负载均衡器,这是我的配置:

frontend haproxynode
    bind *:443 ssl crt /etc/ssl/private/isel.pem alpn h2,http/1.1
    mode tcp
    default_backend backendnodes
    
 backend backendnodes
    balance roundrobin
    option forwardfor
    server node1 192.168.1.5:80 check
    server node2 192.168.1.6:80 check

这是我的网络:

网络

我在两个服务器虚拟机中运行文字新闻服务器。我正在使用 h2load 进行基准测试。当我使用该命令时,h2load -n 30 -c 30 https://192.168.1.26/blog/我得到以下信息:

在此输入图像描述

正如您所看到的,应用程序协议是 h2,但在 WireShark 中请求显示为 HTTP 1.1,为什么?

在此输入图像描述

答案1

您确定您的服务器支持不加密的 http/2 吗?

尝试这个:

backend servers
   mode http
   server S1 XXX.XXX.XXX:80 proto h2
   server S2 XXX.XXX.XXX:80 proto h2

如果您启用了加密,请尝试以下操作:

backend servers
   mode http
   server S1 XXX.XXX.XXX:443 ssl alpn h2
   server S2 XXX.XXX.XXX:443 ssl alpn h2

相关内容