试图让Websockify / noVNC通过反向代理工作

时间:2014-12-31 13:31:32

标签: apache google-chrome firefox websocket vnc

我试图弄清楚如何让noVNC通过反向代理工作,虽然它可以直接连接到它,但如果我尝试反向代理它似乎不起作用。

即:

我将其作为./utils/launch.sh --vnc localhost:5901

运行

如果我以https://<machine>:6080/vnc.html?host=<machine>&port=6080

连接到它

它工作正常,我可以连接到vnc会话

但是,我希望能够通过端口443上的反向代理连接到它。

在Apache 2.4.10(Debian Jessie中的-8)中,我已将我的代理行配置为

ProxyPass /home http://127.0.0.1:6080/
ProxyPassReverse /home http://127.0.0.1:6080/
ProxyPass /websockify wss://127.0.0.1:6080/websockify retry=3
ProxyPassReverse /websockify wss://127.0.0.1:6080/websockify retry=3

我以https://<machine>/vnc.html?host=<machine>&port=6080

的身份连接到它

这仍然有效,因为当html / javascript的获取通过反向代理时,我仍然告诉websocket连接超过6080并且它可以工作。

但是,当我将其更改为https://<machine>/vnc.html?host=<machine>&port=443

我得到html / javascript就好了,但是当它进行连接时,在firefox(以及chrome和IE,但这个错误来自firefox的具体)我很快就得到了

Firefox can't establish a connection to the server at wss://<machine>/websockify.

并且在noVNC中我看到错误消息

127.0.0.1: ignoring socket not ready

1 个答案:

答案 0 :(得分:3)

事实证明,如果想通过https代理代理websockets,那么应该使代理部分正常的websockets(ws://)不是安全的Web套接字(wss://),因为https代理会有已经处理了ssl部分,没有任何事情要做。

ProxyPass /websockify ws://127.0.0.1:6080/websockify retry=3
ProxyPassReverse /websockify ws://127.0.0.1:6080/websockify retry=3

进行改变,一切正常。