我有一个 Web 服务器在自定义域下的 AWS 负载均衡器后面的 EC2 实例上运行,用于使用 https。
Curl 向网络服务器发出的请求按预期工作,包括通过 https 发出的请求。但建立 websocket 连接失败,并出现以下错误(在 Chrome 中):
与 'wss://sub.foo.com/' 的 WebSocket 连接失败:原因不明
虽然这是一个神秘的错误消息,但我猜测这与 AWS 有关,因为:
- 与在本地主机上运行的服务器建立套接字工作正常
- 通过绕过负载均衡器与 AWS 上运行的服务器建立套接字可以正常工作
我使用 Clojure 的 http-kit 作为网络服务器,但怀疑这并不重要。
亚马逊说它的负载均衡器支持 websockets,那么我做错了什么?
答案1
这最终变成了完全不相关的东西:浏览器扩展。uBlock Origin 浏览器扩展似乎不喜欢跨域建立安全的 websocket 连接(在本例中,从本地主机到我在测试时自定义域后面的 AWS 上的服务器)。