一、官网地址

  地址: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 文件内容为:

  1. vnc123: 192.168.20.134:5901
  2.  vnc234: 192.168.20.134:5902
  3. vnc345: 192.168.20.133:5901

  注意: 一个 token 文件可以对应一台客户机(虚拟机),一个 token 文件也可以对应多台客户机(虚拟机)。为了方便编程和管理,通常是一对一的关系,统一放在token目录下。

  1.  
    [root@node2 websockify]# ll /usr/local/websockify/token/
  2.  
    -rw-r--r-- 1 root root 28 5月 29 16:46 vnc123
  3.  
    -rw-r--r-- 1 root root 28 5月 29 16:46 vnc234
  4.  
    -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=这个参数

websockify文档的更多相关文章

  1. C#给PDF文档添加文本和图片页眉

    页眉常用于显示文档的附加信息,我们可以在页眉中插入文本或者图形,例如,页码.日期.公司徽标.文档标题.文件名或作者名等等.那么我们如何以编程的方式添加页眉呢?今天,这篇文章向大家分享如何使用了免费组件 ...

  2. dotNET跨平台相关文档整理

    一直在从事C#开发的相关技术工作,从C# 1.0一路用到现在的C# 6.0, 通常情况下被局限于Windows平台,Mono项目把我们C#程序带到了Windows之外的平台,在工作之余花了很多时间在M ...

  3. ABP文档 - Javascript Api - AJAX

    本节内容: AJAX操作相关问题 ABP的方式 AJAX 返回信息 处理错误 HTTP 状态码 WrapResult和DontWrapResult特性 Asp.net Mvc 控制器 Asp.net ...

  4. ABP文档 - EntityFramework 集成

    文档目录 本节内容: Nuget 包 DbContext 仓储 默认仓储 自定义仓储 特定的仓储基类 自定义仓储示例 仓储最佳实践 ABP可使用任何ORM框架,它已经内置了EntityFrame(以下 ...

  5. ABP文档 - SignalR 集成

    文档目录 本节内容: 简介 安装 服务端 客户端 连接确立 内置功能 通知 在线客户端 帕斯卡 vs 骆峰式 你的SignalR代码 简介 使用Abp.Web.SignalR nuget包,使基于应用 ...

  6. ABP文档 - 通知系统

    文档目录 本节内容: 简介 发送模式 通知类型 通知数据 通知重要性 关于通知持久化 订阅通知 发布通知 用户通知管理器 实时通知 客户端 通知存储 通知定义 简介 通知用来告知用户系统里特定的事件发 ...

  7. ABP文档 - Hangfire 集成

    文档目录 本节内容: 简介 集成 Hangfire 面板授权 简介 Hangfire是一个综合的后台作业管理器,可以在ABP里集成它替代默认的后台作业管理器,你可以为Hangfire使用相同的后台作业 ...

  8. ABP文档 - 后台作业和工作者

    文档目录 本节内容: 简介 后台作业 关于作业持久化 创建一个后台作业 在队列里添加一个新作业 默认的后台作业管理器 后台作业存储 配置 禁用作业执行 Hangfire 集成 后台工作者 创建一个后台 ...

  9. ABP文档 - Javascript Api

    文档目录 本节内容: AJAX Notification Message UI Block & Busy Event Bus Logging Other Utility Functions A ...

随机推荐

  1. 如何重置Portal for ArcGIS、ArcGIS Server管理员密码

    忘记管理员密码是ArcGIS系统管理员司空见惯的情况.每次为了找回站点管理员密码,用户经常要测试多次.有没有一种快捷的解决方案呢?答案是有的. 下面将分别介绍如何重置Portal for ArcGIS ...

  2. Python3文件

    open()方法 Python open()方法永于打开一个文件,并返回文件对象,并对文件进行处理过程中都需要用到这个方法,如果该文件无法被打开,则抛出OSError 注意:使用open()方法一定要 ...

  3. FCN笔记

    FCN.py tensorflow命令行参数 FLAGS = tf.flags.FLAGS tf.flags.DEFINE_integer("batch_size", " ...

  4. ubuntu之路——day10.3 train/dev/test的划分、大小和指标更新

     train/dev/test的划分 我们在前面的博文中已经提到了train/dev/test的相关做法.比如不能将dev和test混为一谈.同时要保证数据集的同分布等. 现在在train/dev/t ...

  5. ubuntu之路——day7.4 梯度爆炸和梯度消失、初始化权重、梯度的数值逼近和梯度检验

    梯度爆炸和梯度消失: W[i] > 1:梯度爆炸(呈指数级增长) W[i] < 1:梯度消失(呈指数级衰减) *.注意此时的1指单位矩阵,W也是系数矩阵 初始化权重: np.random. ...

  6. PLSQL命令行创建用户 以及 JDBC简单操作

    目录 PLSQL Developer命令行创建用户以及表 课堂要点 ​ JDBC 主外键约束 踩坑之路 设置ORACLE_HOME环境变量 PLSQL Developer命令行创建用户以及表 打开Co ...

  7. useReducer介绍和简单使用(六)

    上节课学习了useContext函数,那这节课开始学习一下useReducer,因为他们两个很像,并且合作可以完成类似的Redux库的操作.在开发中使用useReducer可以让代码具有更好的可读性和 ...

  8. 关于微信手机端IOS系统中input输入框无法输入的问题

    如果网站不需要阻止用户的选择内容的行为就可以使用如下样式: * { -webkit-user-select: text; -user-select: text;}另一种方式: *: not(input ...

  9. Docs-.NET-C#-指南-语言参考-预处理器指令:#pragma warning(C# 参考)

    ylbtech-Docs-.NET-C#-指南-语言参考-预处理器指令:#pragma warning(C# 参考) 1.返回顶部 1. #pragma warning(C# 参考) 2015/07/ ...

  10. Leetcode: 24 Game

    You have 4 cards each containing a number from 1 to 9. You need to judge whether they could operated ...