我试图弄清楚如何让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
答案 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
进行改变,一切正常。