基于Nginx实现RTMP/HLS视频服务器

首先名词解释

RTMP

实时消息协议英语:Real-Time Messaging Protocol,缩写RTMP)也称实时消息传输协议,是最初由Macromedia为通过互联网Flash播放器与一个服务器之间传输流媒体音频视频和数据而开发的一个专有协议。Macromedia后被Adobe Systems收购,该协议也已发布了不完整的规范供公众使用。

RTMP协议有许多变种:

  1. 默认使用TCP端口1935的纯粹(plain)协议。
  2. RTMPS,通过一个TLS/SSL连接传输RTMP。
  3. RTMPE,使用Adobe自有安全机制加密的RTMP。虽然实现的细节为专有,但该机制使用行业标准的密码学原函数。[1]
  4. RTMPT,用HTTP封装以穿透防火墙。RTMPT通常在TCP通信端口80和443上使用明文请求来绕过大多数的公司流量过滤。封装的会话中可能携带纯粹的RTMP、RTMPS或RTMPE数据包。
  5. RTMFP, 使用UDP而非TCP的RTMP,取代RTMP Chunk Stream。Adobe Systems开发了安全的实时媒体流协议包,可以让最终用户直接地相互连接(P2P)。

虽然RTMP的主要动机是成为一个播放Flash视频的协议,但它也用于其他一些应用程序,如Adobe LiveCycle Data Services ES

HLS

HTTP Live Streaming(缩写是HLS)是一个由苹果公司提出的基于HTTP流媒体网络传输协议。是苹果公司QuickTime XiPhone软件系统的一部分。它的工作原理是把整个流分成一个个小的基于HTTP的文件来下载,每次只下载一些。当媒体流正在播放时,客户端可以选择从许多不同的备用源中以不同的速率下载同样的资源,允许流媒体会话适应不同的数据速率。在开始一个流媒体会话时,客户端会下载一个包含元数据的extended M3U (m3u8) playlist文件,用于寻找可用的媒体流。

HLS只请求基本的HTTP报文,与实时传输协议(RTP)不同,HLS可以穿过任何允许HTTP数据通过的防火墙或者代理服务器。它也很容易使用内容分发网络来传输媒体流。

苹果公司把HLS协议作为一个互联网草案(逐步提交),在第一阶段中已作为一个非正式的标准提交到IETF。2017年8月,RFC 8216发布,描述了HLS协议第7版的定义。[1]

 

Nginx对这两种视频模式提供了支持。HLS部分可见 https://nginx.org/en/docs/http/ngx_http_hls_module.html,RTMP部分可见 https://github.com/arut/nginx-rtmp-module,这部分是非官方的。

单点登录系统CAS5.0.x配置与部署

本文由@iflab-FZ贡献

cas5.0版本采用gradle-over-lay的形式部署。外加界面的简单定制,验证码,cas-management的配置。

由于是凭着之前配置的印象来写文章,难免会有疏漏,欢迎指正。

首先简介CAS。cas是耶鲁大学研发的一套单点登录系统,为多个应用进行统一的用户认证提供了很好地解决方案。它在https协议下,以安全的方式对用户的合法性进行认证,同时与需要用户认证的各应用进行交互,使多个应用共用一套程序进行统一认证。

以下是部署cas可能会用到的网站:

https://apereo.github.io/cas/5.1.x/index.html
Github:https://github.com/apereo
Maillist:https://www.mail-archive.com/cas-user@apereo.org/Continue reading

单点登录系统CAS的委托(Delegation)认证配置

本文由@iflab-FZ贡献

关于如何在一台服务器上部署中央认证系统(CAS)的方法在之前的文章中已经介绍过了

*以下方法与配置依旧基于CAS5.0.x,不同版本可能配置方式与属性稍有差异

由于之前学校的新生数据同步较慢,需要一个学期左右的时间才能同步到CAS的数据库,所以这就造成了新生无法在入学之后及时使用部分服务和应用,例如使用edx进行在线学习等等。

因为之前部署的CAS使用的是gradle-overlay方式,所有的配置都是通过修改配置文件来完成的,为了避免直接修改线上稳定运行的CAS的配置文件,想到还有另一台服务器安装了新的测试版的CAS,所以决定让测试版的服务器连接自己建立的数据库,作为现行CAS的委托认证服务器对新生的账号进行认证。

具体参考了这篇 说明文档

Continue reading