反向代理后面打开虚拟机控制台报无法连接:补一对 WebSocket 标头就好
控制台打不开,问题多半不在虚拟机
通过反向代理访问 Virtual Machine Manager,点开某台虚拟机的控制台,窗口里弹出「无法连接到服务器」。虚拟机本身在正常跑,网络也通——被卡住的是浏览器到控制台之间这条通道。
诊断:代理拦下了 WebSocket 流量
VMM 的控制台画面,靠 WebSocket 连接流式传输到浏览器。而 DSM 反向代理的默认设置里,HTTP 1.1 的 WebSocket 支持并没有启用——代理服务器把这条它不认识的流量拦了下来,控制台自然连不上。这类问题只在「走反向代理规则访问」时出现,直连 DSM 端口访问不会有。
修法:给规则补一对 WebSocket 标头
四步操作:
-
进入控制面板 > 登录门户 > 高级 > 反向代理服务器;
-
选中给 VMM 用的那条规则,单击编辑;
-
切到自定义标题选项卡;
-
单击 创建 > WebSocket——系统会自动生成所需的 Upgrade 和 Connection 两个标头,不必手填。
改完之后刷新浏览器,或清一次浏览器缓存,再去连虚拟机控制台,画面就能正常流出来。
边界与小结
-
这一招管的是 VMM 控制台经反向代理打不开的场景;监控实时画面报类似「无法连接」的,是另一族问题,站内监控播放通道五层排查篇已单独展开,两者排查面不同;
-
以后新建反向代理规则给其他套件用,凡是要在浏览器里实时出画面的(控制台、远程桌面一类),都记得进自定义标题点一次 创建 > WebSocket。
诚鑫致达科技给反向代理规则起名有个习惯:规则名后面缀上用途记号,加了 WebSocket 标头的挂个 -ws——半年后回头看一串规则,谁的标头加过、谁没加,从名字上一眼分清,不用逐条点开编辑页去翻。