如何在GitHub Codespaces中使用Nginx和RTMP?直播服务故障排查
GitHub Codespaces中Nginx+RTMP推流失败的排查与解决
端口映射与访问权限问题
- GitHub Codespaces默认仅对外暴露80、443等少数端口,RTMP默认的1935端口大概率没被正确对外开放:
- 打开Codespaces左下角的「Ports」面板,找到Nginx监听的1935端口,右键选择「Port Visibility」设置为「Public」。
- OBS推流地址必须使用Codespaces分配的公网域名+1935端口,格式类似
rtmp://<codespaces-id>-1935.app.github.dev/live,别再用localhost。 - 检查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类日志,基本可以确认是端口被拦截。
- 在终端执行以下命令开放RTMP所需的TCP/UDP端口:
OBS推流配置匹配问题
- 本地推流用
rtmp://localhost/live没问题,但到Codespaces后要严格匹配Nginx的RTMP应用配置:- 确认nginx.conf中的RTMP块配置,比如:
rtmp { server { listen 1935; application live { live on; record off; } } }- 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
相关产品推荐
相关产品推荐

