HTTP/2肯定是未来的趋势,因为它现在是HTTP协议的标准.我们可以在使用中看到,70.15%的浏览器支持HTTP/2.但HTTP/2是如此新颖,以至于只有支持HTTP/1.x的浏览器,并且有许多服务器只支持HTTP/1.x. 我知道客户端可以使用HTTP升级机制来协商正确的协议以与服务器通信.例如,如果服务器支持HTTP/2,则它们的通信协议将切换到HTTP/2,否则使用HTTP/1.x. 但这仅适用于客户端使用的浏览器同时支持HTTP/2和HTTP/1.x的情况,对吗?
但是,如果浏览器上仅支持HTTP/1.x的用户想要与仅HTTP/2服务器通信呢?服务器是否会忽略该请求或将错误发送回用户?
如果只支持HTTP/2的浏览器上的用户想要与仅HTTP/1.1服务器通信呢?我认为这个过程可能是这样的:用户向服务器发送连接前言,服务器无法识别请求,因此用户可能会收到连接错误消息.这是正确的吗?
或者是否有任何浏览器仅支持HTTP/2?
我有一个与浏览器如何知道站点是否支持 HTTP/2?。我想知道浏览器如何知道网站支持http3。
我正在使用 safari 并打开了 http3 支持。然后我去https://cloudflare-quic.com,协议是h3-29。我认为我的 safari 使用 h3 协议探索这个网站。它是怎么知道的呢?
我们在 API 网关后面有许多服务,而 API 网关本身又在 ingress-nginx 后面。我们尝试使用 HTTP/2 来加速到前端的数据传输,但我们所有的连接仍然使用 HTTP/1.1 完成。
客户端到 nginx 的连接是通过 HTTPS 进行的,但是 nginx 使用 HTTP 与我们的 API 网关通信,网关也使用 HTTP 与后端服务通信。
我们是否需要端到端使用 HTTPS 才能使 HTTP/2 正常工作?如果是这样,那么使用证书进行设置的最佳方法是什么?如果不是,什么可能导致连接下降到 HTTP/1.1?
我们使用 ingress-nginx 版本 0.21.0,其中包含 nginx 1.15.6 和 OpenSSL 1.1.1,这应该足以支持 TLS 1.3/ALPN/HTTP2。我们的 nginx 配置 configmap 已use-http2设置为true,我可以看到 pod/etc/nginx.conf有一条listen ... http2;线。
编辑 2019 年 10 月 5 日:
根据 @Barry Pollard 和 @Rico 的评论,我发现位于我们的 ingress-nginx 控制器前面的 AWS Elastic Load Balancer 不支持 HTTP/2。我已将 nginx 从堆栈中删除,并且我们的 API …