使用webrtc的时候,除非是localhost,否则都需要使用https才可以。官方推荐使用docker启动srs,这里我们就以docker为例,来进行srs的云端部署。
1.准备一台云服务器
2.申请ssl证书,以srs.xxx.cn 域名为例
3. 编写一个docker-compser文件用以启动docker
version: "3"
services:
srs:
image: registry.cn-hangzhou.aliyuncs.com/ossrs/srs:5
command: ./objs/srs -c conf/docker.conf
environment:
- CANDIDATE=云主机外网IP
ports:
- 1935:1935
- 1985:1985
- 8080:8080
- 1990:1990
- 8088:8088
- 8000:8000/udp
restart: always
虽然srs 提供了https的配置文件,但是从使用方便的考虑,还是直接用docker.conf作为配置文件
4. 安装nginx,配置srs的反向代理
参考官方文档 https://github.com/ossrs/srs/issues/2881#nginx-proxy
将证书文件拷贝到nginx的文件夹下,并编写配置文件
server {
listen 80;
listen 443 ssl http2;
server_name srs.moensun.cn;
ssl_certificate /etc/nginx/ssl/srs.xxx.cn_bundle.crt;
ssl_certificate_key /etc/nginx/ssl/srs.xxx.cn.key;
# For SRS homepage, console and players
# http://r.ossrs.net/console/
# http://r.ossrs.net/players/
location ~ ^/(console|players)/ {
proxy_pass http://127.0.0.1:8080/$request_uri;
}
# For SRS streaming, for example:
# http://r.ossrs.net/live/livestream.flv
# http://r.ossrs.net/live/livestream.m3u8
location ~ ^/.+/.*\.(flv|m3u8|ts|aac|mp3)$ {
proxy_pass http://127.0.0.1:8080$request_uri;
}
# For SRS backend API for console.
# For SRS WebRTC publish/play API.
location ~ ^/(api|rtc)/ {
proxy_pass http://127.0.0.1:1985$request_uri;
}
#页面反向代理,是否设置根据自己情况
location ~ / {
proxy_pass http://127.0.0.1:8090$request_uri;
}
}
重新加载配置文件
nginx -s reload
5. 访问前端页面
https://srs.xxx.cn
测试结果,功能正常。
前端的处理逻辑,可以更多参考官方的实现 https://github.com/ossrs/srs/blob/develop/trunk/research/players/js/srs.sdk.js
注意:
云主机一般都会有安全组配置,要把映射的端口放行 1935,1985,8080,1990,8088,8000。尤其是8000端口 要注意udp协议要放行。