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

使用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;
        }
    }
}

配置说明

  1. Stream 模块:作为 SSL 终止层,对外监听 RTMPS 端口,处理 SSL 握手和加密/解密逻辑。
  2. RTMP 模块:仅监听本地端口,处理未加密的 RTMP 流量,避免使用不支持的 ssl 参数。
  3. 转发逻辑:Stream 模块将解密后的流量转发给内部 RTMP 服务,实现加密传输的同时兼容原有 RTMP 业务逻辑。

验证与重启

  1. 检查配置合法性:
nginx -t
  1. 重启 Nginx 生效:
systemctl restart nginx

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 12:02:11