因测试需要配置IPv6环境下的rtmp流媒体服务器,想着直接使用docker镜像,搜索对比后发现这个能满足要求:
https://hub.docker.com/r/tiangolo/nginx-rtmp
但后来确认目标服务器是CentOS 6.5,没办法使用docker,所以就将原作者的dockerfile转换成了shell,方便在没有docker环境的机器上使用。
思路整理:测试环境部署软件的时候可以优先考虑docker方案,就算是自己从无到有部署,dockerfile也会是最好的参考。
整个过程中碰到到以下问题做些说明:
依赖安装问题: 编译nginx的时候提示PCRE库找不到,因此加入了安装依赖的步骤,不同的系统的系统还可能会提示其他错误,需要按提示安装依赖库。
nginx rtmp配置问题:一开始是照搬原作者的配置文件(端口一样,应用一样),但实际测试中发现使用IPv4和IPv6地址推同一个流名称时,会有以下的现象:
客户端不会没有报错。
拉流的时候会混乱,可能只有其中一个地址能拉到流,并且不同时间拉的流可能会错乱(IPv4地址拉取到IPv6地址推过来的流)。
对于以上两个现象,可能需要更近一步分析才能知道原因了。因此这里为了避免混淆,直接配置了两个服务,分别配置成不用的端口及应用名。
CentOS6.5环境下ipv6网络有单独的防火墙服务进行控制,服务名为ip6tables。ip6tables服务停止后网络终于通了, IPv6地址的服务探测也可以使用telnet ip port命令(windows)
原作者提供nginx配置文件:
1 worker_processes auto; 2 rtmp_auto_push on; 3 events {} 4 rtmp { 5 server { 6 listen 1935; 7 listen [::]:1935 ipv6only=on; 8 application live { 9 live on; 10 record off; 11 } 12 } 13 }