反向代理后面打开虚拟机控制台报无法连接:补一对 WebSocket 标头就好

控制台打不开,问题多半不在虚拟机

通过反向代理访问 Virtual Machine Manager,点开某台虚拟机的控制台,窗口里弹出「无法连接到服务器」。虚拟机本身在正常跑,网络也通——被卡住的是浏览器到控制台之间这条通道。

诊断:代理拦下了 WebSocket 流量

VMM 的控制台画面,靠 WebSocket 连接流式传输到浏览器。而 DSM 反向代理的默认设置里,HTTP 1.1 的 WebSocket 支持并没有启用——代理服务器把这条它不认识的流量拦了下来,控制台自然连不上。这类问题只在「走反向代理规则访问」时出现,直连 DSM 端口访问不会有。

修法:给规则补一对 WebSocket 标头

四步操作:

  • 进入控制面板 > 登录门户 > 高级 > 反向代理服务器;

  • 选中给 VMM 用的那条规则,单击编辑;

  • 切到自定义标题选项卡;

  • 单击 创建 > WebSocket——系统会自动生成所需的 Upgrade 和 Connection 两个标头,不必手填。

改完之后刷新浏览器,或清一次浏览器缓存,再去连虚拟机控制台,画面就能正常流出来。

边界与小结

  • 这一招管的是 VMM 控制台经反向代理打不开的场景;监控实时画面报类似「无法连接」的,是另一族问题,站内监控播放通道五层排查篇已单独展开,两者排查面不同;

  • 以后新建反向代理规则给其他套件用,凡是要在浏览器里实时出画面的(控制台、远程桌面一类),都记得进自定义标题点一次 创建 > WebSocket。

诚鑫致达科技给反向代理规则起名有个习惯:规则名后面缀上用途记号,加了 WebSocket 标头的挂个 -ws——半年后回头看一串规则,谁的标头加过、谁没加,从名字上一眼分清,不用逐条点开编辑页去翻。