一、官網地址
地址:https://github.com/novnc/websockify
二、開啟代理
1、單台服務器
python /usr/local/websockify/websockify.py --cert /usr/local/websockify/self.pem 6080 192.168.20.134:5901
self.pem可使用OpenSSL來生成,然后放在目錄下,當然也可以不加cert參數
openssl req -new -x509 -days 365 -nodes -out self.pem -keyout self.pem
2、多台節點服務器
在實際應用中,不可能為每台虛擬機都架一個代理,這種方式對端口號的消耗也是巨大的,同時 VNC 通常是集成在前端頁面,那有沒有可能僅開一個端口,而實現代理多台虛擬機呢,答案自然是可以。
在 websockify 項目的 Wiki 主頁(https://github.com/novnc/websockify/wiki/Token-based-target-selection)介紹了實現一個端口,多個代理的方法。
在 websockify 項目的 Wiki 主頁介紹了實現一個端口,多個代理的方法。
實現的原理就是 websocketproxy.py 這個代理從一個指定的 token 目錄讀取 token 文件,一個 token 文件通常對應一台客戶機(虛擬機)。token文件內容形如 token1: host1:port1 ,這里的 token1 是全局唯一的一個字符串標識,host1 是客戶機(虛擬機)所在的宿主機的 ip 地址,本例中就是 Node1 的 ip,而 port1 是客戶機(虛擬機) VNC Server 的端口號,本例中就是 Guest1 的 VNC Server 的端口號。因此,本例中名為 generic 的客戶機(虛擬機)Guest1 的 token 文件內容為:
vnc123: 192.168.20.134:5901 vnc234: 192.168.20.134:5902 vnc345: 192.168.20.133:5901
注意: 一個 token 文件可以對應一台客戶機(虛擬機),一個 token 文件也可以對應多台客戶機(虛擬機)。為了方便編程和管理,通常是一對一的關系,統一放在token目錄下。
[root@node2 websockify]# ll /usr/local/websockify/token/ -rw-r--r-- 1 root root 28 5月 29 16:46 vnc123 -rw-r--r-- 1 root root 28 5月 29 16:46 vnc234 -rw-r--r-- 1 root root 28 5月 29 16:46 vnc345
3、啟動代理
/usr/local/websockify/run --token-plugin TokenFile --token-source /usr/local/websockify/token/ 6080
如果是單個token文件,可以使用以下命令啟動
/usr/local/websockify/run --target-config /usr/local/websockify/token/token 6080
三、訪問vnc
使用Chrome、Firefox等瀏覽器訪問(瀏覽器需支持html5)
我本人自己根據novnc的api文檔,寫了一個簡單的demo,放在nginx服務下 http://192.168.20.111/vnc.html?token=vnc123
如果是在novnc中啟動websockify,則需要帶--web參數,訪問地址如下 http://192.168.20.121:8080/vnc.html?path=?token=vnc123
PS:一定要帶path=這個參數