You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GitHub Codespaces中使用Nginx和RTMP?直播服务故障排查

GitHub Codespaces中Nginx+RTMP推流失败的排查与解决

端口映射与访问权限问题

  • GitHub Codespaces默认仅对外暴露80、443等少数端口,RTMP默认的1935端口大概率没被正确对外开放:
    1. 打开Codespaces左下角的「Ports」面板,找到Nginx监听的1935端口,右键选择「Port Visibility」设置为「Public」。
    2. OBS推流地址必须使用Codespaces分配的公网域名+1935端口,格式类似 rtmp://<codespaces-id>-1935.app.github.dev/live,别再用localhost。
    3. 检查nginx.conf中的RTMP监听配置,确保是 listen 1935;,而不是绑定到本地回环地址(listen 127.0.0.1:1935;会导致外部无法连接)。

防火墙与网络规则限制

  • Codespaces内部默认防火墙可能拦截了1935端口的入站流量:
    • 在终端执行以下命令开放RTMP所需的TCP/UDP端口:
      sudo ufw allow 1935/tcp
      sudo ufw allow 1935/udp
      
    • 查看Nginx错误日志(路径一般为 /var/log/nginx/error.log),如果有connection refused或no route to host类日志,基本可以确认是端口被拦截。

OBS推流配置匹配问题

  • 本地推流用rtmp://localhost/live没问题,但到Codespaces后要严格匹配Nginx的RTMP应用配置:
    1. 确认nginx.conf中的RTMP块配置,比如:
    rtmp {
        server {
            listen 1935;
            application live {
                live on;
                record off;
            }
        }
    }
    
    1. OBS的推流地址要填 rtmp://<你的Codespaces公网域名>:1935/live,串流密钥可自定义(比如my-stream),同时确保网页播放地址的参数和串流密钥一致(比如网页中播放地址是rtmp://.../live/my-stream)。

Nginx服务与RTMP模块状态检查

  • 网页能加载不代表RTMP模块正常工作:
    • 执行 sudo systemctl status nginx 检查Nginx服务是否正常运行,看日志中是否有RTMP模块加载失败的提示。
    • 执行 nginx -V,输出内容必须包含--with-rtmp-module,如果没有,说明当前Nginx未编译RTMP模块,需要重新编译安装带该模块的Nginx。

Codespaces资源瓶颈

  • 低配Codespaces实例可能因CPU/内存不足无法处理RTMP流:
    • 在Codespaces设置中切换到更高规格的机器实例,然后重启环境。
    • 用top或htop命令查看系统资源占用,确认Nginx进程是否因资源不足被限制。

内容的提问来源于stack exchange,提问作者Scratch Guy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 13:13:22