我在AWS EC2 Autoscale集群上运行了一个Akka HTTP服务器。该集群有一个ELB应用程序负载均衡器。除了ELB外,我们还设置了一个云前置分发,用于提供静态文件。
我们遇到了一个问题,即浏览器到后端的所有websocket连接请求都失败,并显示“HTTP 400 Expected UpgradeToWebsocket header”错误。
进一步调查后,我们发现客户端能够直接连接到负载均衡器,但通过Cloudfront的任何连接请求都会失败。最终,我在AWS Cloudfront文档中找到了this page,它说Cloudfront会剥离可能导致客户端无法连接的“升级”头信息。
为解决此问题,我启用了所有“header forwarding”选项(禁用缓存),但仍无法解决。此外,我找不到任何选择性地禁用Cloudfront缓存或完全绕过某些URL的Cloudfront的选项。
如何解决此问题并确保WebSocket可以通过Cloudfront正常工作?或者这是不支持的吗?
我们遇到了一个问题,即浏览器到后端的所有websocket连接请求都失败,并显示“HTTP 400 Expected UpgradeToWebsocket header”错误。
进一步调查后,我们发现客户端能够直接连接到负载均衡器,但通过Cloudfront的任何连接请求都会失败。最终,我在AWS Cloudfront文档中找到了this page,它说Cloudfront会剥离可能导致客户端无法连接的“升级”头信息。
为解决此问题,我启用了所有“header forwarding”选项(禁用缓存),但仍无法解决。此外,我找不到任何选择性地禁用Cloudfront缓存或完全绕过某些URL的Cloudfront的选项。
如何解决此问题并确保WebSocket可以通过Cloudfront正常工作?或者这是不支持的吗?