使用Nginx+nginx-rtmp-module配置RTMP SSL时出现无效ssl参数错误求助
问题解决:nginx-rtmp-module 无法使用 ssl 参数的错误
错误原因
nginx-rtmp-module 的 rtmp 配置块中,listen 指令不支持 ssl 参数——该参数是 Nginx HTTP 模块的专属配置,RTMP 模块本身没有实现对它的支持,因此会抛出 invalid "ssl" parameter 错误。你之前配置 HTTPS 正常是因为 HTTP 模块原生支持该参数,二者模块逻辑存在差异。
解决方案:用 Stream 模块实现 RTMPS 加密
要实现带 SSL/TLS 的 RTMP(即 RTMPS),需要借助 Nginx 的 Stream 模块完成 SSL 终止,将加密的 RTMPS 流量解密后转发给内部未加密的 RTMP 服务。具体配置修改如下:
修改后的 nginx.conf
user www-data; worker_processes auto; pid /run/nginx.pid; include /etc/nginx/modules-enabled/*.conf; events { worker_connections 768; # multi_accept on; } # 负责处理 RTMPS 的 SSL 加密/解密 stream { server { listen 1935 ssl; # 对外提供 RTMPS 服务的端口,可自定义(如443) ssl_certificate /etc/nginx/rtmpssl/certificate.crt; ssl_certificate_key /etc/nginx/rtmpssl/rtmpprvkey.pem; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers "ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305"; ssl_prefer_server_ciphers on; # 将解密后的流量转发到本地 RTMP 服务 proxy_pass 127.0.0.1:1936; } } # 处理未加密的内部 RTMP 流量 rtmp { server { listen 1936; # 仅本地监听,不暴露到公网 chunk_size 4096; application live { live on; record off; allow play all; } } }
配置说明
- Stream 模块:作为 SSL 终止层,对外监听 RTMPS 端口,处理 SSL 握手和加密/解密逻辑。
- RTMP 模块:仅监听本地端口,处理未加密的 RTMP 流量,避免使用不支持的
ssl参数。 - 转发逻辑:Stream 模块将解密后的流量转发给内部 RTMP 服务,实现加密传输的同时兼容原有 RTMP 业务逻辑。
验证与重启
- 检查配置合法性:
nginx -t
- 重启 Nginx 生效:
systemctl restart nginx
内容的提问来源于stack exchange,提问作者Higashira
相关产品推荐
相关产品推荐

