我正在尝试通过IIS上的反向代理连接到websockets服务器(websockify).IIS和websockets服务器驻留在同一物理服务器上(Windows Server 2012 R2,IIS 8.5,ARR 3,启用了Websockets).我已经看到了一些关于这个的问题,并建议这应该适用于IIS 8和ARR 3,但目前还没有实际的解决方案.我在IIS中有一些http/https反向代理的经验,但这是我第一次尝试使用websockets.
例如:
原始网址:ws://10.2.1.10/websockify
反向代理需要将其转换为:ws://10.2.1.10:5901/websockify
web.config中的一般示例规则:
<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>
Run Code Online (Sandbox Code Playgroud)
根据失败的请求跟踪,URL似乎被翻译,但由于某种原因,它没有到达10.2.1.10:5901的websocket服务器.
最终目标是合并noVNC/websockify,以便为网络上的多个VNC服务器提供基于浏览器的客户端访问.任何帮助理解如何反向代理websockets表示赞赏.
noVNC websocket 日志在身份验证事件中显示上述消息。身份验证总是失败,并且 noVNC 报告主题错误。
有时错误是 代码 400,消息错误 HTTP/0.9 请求类型 ('\x88\x8fR\x80\x19\x98QhM\xf9')
('\x88\x80\xa32\xc9\x98') 是 ASCII 还是 UTF-8 ?如何阅读和理解此消息?
背景:CentOS 5 / Python 2.4.3 / noVNC
Ive为四个项目(所有带有Ubuntu 15.04主机的VMware Player VM)提供了4个开发VM,每个项目均运行VNC(端口5900、5901、5902、5903)。
我下载了noVNC并保存到/ var / www / html(我的apache2服务器在同一主机上)。然后根据自述文件在终端上运行
./utils/launch.sh --vnc localhost:5900
Run Code Online (Sandbox Code Playgroud)
我收到一个丢失的websockify错误,因此下载了该错误并将其放入util文件夹。然后,我运行了相同的命令,它起作用了!终端告诉我导航到URL,并确定我可以控制我的VM。
但是-我想知道如何使用noVnc访问所有4个VM?是否有一些简单的方法可以将端口扩展到iptables或Firewalld中的范围?
./utils/launch.sh --vnc localhost:5900-5903
Run Code Online (Sandbox Code Playgroud)