【发布时间】:2020-04-23 21:37:10
【问题描述】:
我有一个在 Google Cloud Platform 中的负载均衡器后面运行的应用程序。
当我在后端使用 HTTPS 协议时,我能够与 WebSockets 连接,并且所有 WebSocket 连接都可以正常工作。但是,当我将后端协议更改为 HTTP/2 时,我无法从应用程序连接,并返回 502 Bad Gateway 的响应。
我可以将 WebSockets 与 HTTP/2 一起使用,还是需要执行一些配置才能将 WebSockets 与 HTTP2 后端一起使用?
【问题讨论】:
-
Websocket 代理对负载均衡器应该是透明的,在文档中它并没有过多地说明 HTTP2 协议。 cloud.google.com/load-balancing/docs/https/…
-
你好@Pievis,但我无法理解Websocket代理应该对负载均衡器透明可以请解释一下这行吗?谢谢
-
WebSocket 握手需要 HTTP/1.1(目前)...如果您强制所有通信进入 HTTP/2,您将中断 WebSocket 握手。这是因为 HTTP/2 确实不支持
Upgrade指令。 -
不要将 HTTP/2 后端与 WebSocket 一起使用。负载均衡器会将 HTTP 升级协议请求转发到后端,这将失败。
标签: networking websocket google-cloud-platform http2 google-cloud-load-balancer