IIS 反向代理和 websocket,websocket 握手失败

IIS 反向代理和 websocket,websocket 握手失败

我在 Windows Server 2008 R2 上使用 IIS 7.5 运行了一个小型网站。我也在端口 3000 上运行了一个 node.js 应用程序。

来自网站(客户端浏览器)的 Http 调用从 反向代理http://example.com/node/whateverhttp://localhost:3000/whatever。到目前为止一切正常。

当我尝试使用 socket.io 时出现了问题。

我收到:

WebSocket connection to 'ws://example.com/socket.io/?EIO=3&transport=websocket&sid=adb9WRpoMFYRoS0vAAAB' failed: Error during WebSocket handshake: Unexpected response code: 502 

我很确定,如果我没错的话,那:

它确实将初始请求转发到我的服务器,因为对 websocket 服务器的初始请求是标准 HTTP 请求(带有一些附加标头)。IIS 知道这一点,并简单地转发请求。但是,在收到 websocket 请求后,websocket 服务器会发送 101 响应并切换到 websocket 模式。IIS 不了解 websocket 流量,也无法代理该流量。

是否有技巧或解决方案来为 ws:// 地址配置反向代理?

答案1

相关内容