Docker部署RTMP Nginx服务器:手机无法接入问题求助
解决手机无法连接RTMP服务器的问题
按以下步骤逐一排查:
1. 确认Docker端口映射配置
运行容器时必须显式映射1935端口到宿主机,否则外部设备无法访问容器内的RTMP服务。执行以下命令重启容器(替换为你实际的容器启动参数):
docker run -d -p 1935:1935 --name rtmp-server tiangolo/nginx-rtmp
若已创建旧容器,先停止并删除旧容器,再重新运行带端口映射的命令。
2. 使用正确的访问IP
手机需要访问Windows宿主机的局域网IP(而非WSL内部IP,例如172.24.160.1是WSL私有IP,手机无法直接访问):
- 查看Windows局域网IP:打开cmd输入
ipconfig,找到当前WiFi/Ethernet适配器的IPv4地址(格式通常为192.168.x.x)。 - 手机推流/播放地址应为:
rtmp://[Windows局域网IP]:1935/webcam
3. 放行Windows防火墙端口
Windows默认防火墙会阻止外部设备访问本地端口,需添加1935端口的允许规则:
- 打开「Windows Defender防火墙」→「高级设置」→「入站规则」→「新建规则」
- 选择「端口」→ 输入1935 → 允许连接 → 勾选所有网络类型 → 命名规则后保存。
- 测试时可临时关闭防火墙,确认是否能连接,排除防火墙干扰。
4. 修正Nginx RTMP配置
你的配置存在冗余和逻辑问题,修改后的极简配置如下(覆盖容器内的/etc/nginx/nginx.conf):
worker_processes auto; events {} rtmp { server { listen 1935; listen [::]:1935 ipv6only=on; application webcam { live on; record off; allow publish all; allow play all; } } }
- 移除了不必要的
rtmp_auto_push on和pull指令(pull用于从其他RTMP源拉流,你不需要这个) - 调整规则顺序,确保所有设备都能推流和播放
修改配置后重启容器生效:
docker restart rtmp-server
5. 确认手机与PC在同一局域网
手机必须和运行Docker的PC连接同一个WiFi网络,跨网络(比如PC连WiFi、手机用流量)无法直接访问。
内容的提问来源于stack exchange,提问作者JonasDenmark
相关产品推荐
相关产品推荐

