nginx简单介绍
对于nginx服务,大家都知道,他是一个轻量级的高性能的http服务和方向代理服务,它也支持了pop3/IMAP等协议;最关键的是,它开放了相应的接口,支持其他第三方模块的接入;第三方模块只需要按照nginx开放的接口进行实现,就能够被nginx的core模块加载起来;
提到nginx的第三方模块的开发,顺带提一下nginx对模块的管理,nginx核心模块仅仅负责直接的子模块的和nginx全局状态的管理,对于子模块内部的数据或者模块,不做任何的管理;所以说nginx是一个高度结构化的服务;
rtmp模块介绍
nginx的rtmp模块,是对rtmp协议的实现,广泛应用于音视频领域;在nginx的rtmp模块中,存在多个子模块,分别实现不同的功能,例如:应用于直播的rtmp_live模块;应用于cdn回源的rtmp_relay模块;应用于各种协议的rtmp_flv模块、rtmp_hls模块等;这些子模块,在rtmp模块中是以application的方式存在的;所以我们在rtmp模块的的配置文件中,可与i看到由很多个application;我们看一下nginx的配置文件:
rtmp{
server{
listen 80;
application app1{
live on;
sync 1;
}
application app2{
live on;
sync 1
}
}
server{
listen 80;
application app1{
live on;
sync 1;
}
application app2{
live on;
sync 1
}
}
}
在上面配置文件,我们可以看到存在rtmp{}域中,才能在多个server{}域;而每一个server域中又存在多个application;
2、“server”:每一个server域,就相当于一个rtmp服务,在一个nginx中可以同时开启多个rtmp服务,所以可以配置多个server域;
1、“application”:每一个application,相当于rtmp中的一个子模块,例如rtmp_live模块就需要独立配置一个application域;
在rtmp模块中,子模块的管理沿用了nginx对模块的管理方式和接口,所以各个子模块也都实现了nginx第三方接入的接口,只不过管理是由rtmp模块自己管理的,从nginx core模块来说,感知不到这些子模块的存在;这些子模块的初始化,是伴随着rtmp模块的整体初始化而同步进行的;