文章
问答
冒泡
云端部署srs服务

使用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协议要放行。

ossrs

关于作者

落雁沙
非典型码农
获得点赞
文章被阅读