首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >IIS 8中的Websockets反向代理

IIS 8中的Websockets反向代理
EN

Stack Overflow用户
提问于 2015-12-17 00:10:50
回答 2查看 25.5K关注 0票数 19

我正在尝试通过IIS上的反向代理连接到websockets服务器(websockify)。IIS和websockets服务器驻留在同一物理服务器上(Windows server 2012 R2、IIS8.5、ARR 3、Websockets已启用)。我已经看到了一些关于这方面的问题,有人建议这应该适用于IIS 8和ARR 3,但目前还没有实际的解决方案。我有一些在IIS中使用http/https反向代理的经验,但这是我第一次尝试使用websockets。

例如:

原始url: ws://10.2.1.10/websockify

反向代理需要将其转换为: ws://10.2.1.10:5901/websockify

Web.config中过于通用的示例规则:

代码语言:javascript
运行
复制
<rewrite>
     <rules>               
        <rule name="WS reverse proxy" stopProcessing="true"> 
          <match url="(.*)" />
          <conditions> <add input="{CACHE_URL}" pattern="^(.+)://" /> 
          </conditions> 
          <action type="Rewrite" url="{C:1}://10.2.1.10:5901/websockify"/>       
        </rule>
     </rules>
</rewrite>

根据失败的请求跟踪,url似乎已转换,但由于某种原因,它无法到达位于10.2.1.10:5901的websocket服务器。

最终目标是结合noVNC/websockify,以提供对网络上多个VNC服务器的基于浏览器的客户端访问。任何帮助理解如何反向代理websockets的人都将不胜感激。

EN

回答 2

Stack Overflow用户

发布于 2017-11-16 20:12:22

正如@jowo所说,IIS8/8.5似乎不支持Sec-Websocket-Extensions。也就是说,我采用的变通方法是简单地重写有问题的服务器变量。首先将HTTP_SEC_WEBSOCKET_EXTENSIONS添加到允许的服务器变量列表,然后将其添加到您的规则中:

<serverVariables><set name="HTTP_SEC_WEBSOCKET_EXTENSIONS" value="" /></serverVariables>

这样,目的地就不会收到麻烦的permessage-deflate :)

票数 8
EN

Stack Overflow用户

发布于 2020-03-17 05:50:38

TLDR用于:

通过传递选项perMessageDeflate

  1. url重定向在节点服务器套接字io中压缩的ws和wss协议。禁用压缩,因为IIS Proxy中的APR3不支持它

代码语言:javascript
运行
复制
const io = require("socket.io")(server, {
  transports: ["websocket", "polling"],
  perMessageDeflate: false 
});
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34316825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档