我在 Windows Server 2008 R2 上使用 IIS 7.5 运行了一个小型网站。我也在端口 3000 上运行了一个 node.js 应用程序。
来自网站(客户端浏览器)的 Http 调用从 反向代理http://example.com/node/whatever
到http://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
看来 IIS 7.5 不提供 WebSocket 支持。
http://www.iis.net/learn/get-started/whats-new-in-iis-8/iis-80-websocket-protocol-support