编译安装带有RTMP模块的nginx

#20200522 Update: 将模块更换为更新且仍在维护的nginx-http-flv-module,使用方法和效果一样,但功能更强大

RT,这个参照了obs的论坛上的帖子,然后把其中可能遇到的坑也总结了进来,从0开始编译,系统为Debian 11,root账户

1、搞一下编译环境

apt-get install git build-essential openssl libpcre3 libpcre3-dev unzip libssl-dev zlib1g-dev

编译并安装nginx

git clone https://github.com/nginx/nginx #nginx
git clone https://github.com/winshining/nginx-http-flv-module #nginx-rtmp模块
cd nginx
./auto/configure --prefix=/usr/local/nginx --with-http_ssl_module --add-module=../nginx-http-flv-module --with-http_v2_module --with-stream --with-http_realip_module
make
make install

(你问我为啥要编译http2?万一以后你要用咋办,以后要用的时候省事啊)
写配置文件,这一行直接在nginx.conf的最后一个大括号之外贴上即可,具体功能可按照git上的说明来进行调整

vim /usr/local/nginx/conf/nginx.conf

rtmp {
    server {
        listen 1935;
        chunk_size 4096;
        application live {
            live on;
            record off;
        }
    }
}

实际使用方法:
按照上面的参数,URL默认格式是rtmp://yourdomain/live/***
星号内是自定义内容,可以理解为部分应用上所说的密码
另外,部分推流软件不允许密码空着(例如obs,空着会推不上去流),这时候就应该把地址拆成两份填写

流媒体地址:rtmp://yourdomain/live
密码:***

注意:流媒体地址的最后结尾不要加斜杠,系统会自动帮你加
最后,加一个nginx自启动吧

vim /lib/systemd/system/nginx.service

[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/var/run/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

保存退出,然后

systemctl enable nginx.service #开启自启动
systemctl start nginx.servier #启动服务

参考链接:
How to set up your own private RTMP server using nginx
Installing NGINX Open Source
nginx-rtmp-module