Nginx 编译安装 nginx-rtmp-module 需卸载预编译版本,下载 Nginx 源码与模块,配置时用 --add-module 指定路径,静态编译安装后在 nginx.conf 外添加 rtmp 块配置并监听 1935 端口。

在 Nginx 中编译安装支持流媒体的第三方模块(如 nginx-rtmp-module),核心是「重新编译 Nginx 源码并显式添加模块」,而不是直接安装或动态加载(Nginx 官方不支持流媒体模块的动态加载)。以下是清晰、可操作的步骤:
确认当前 Nginx 是否为源码编译安装
运行以下命令检查:
nginx -V 2>&1 | grep -o 'configure arguments:'
若输出为空或提示 command not found,说明你用的是包管理器(如 apt/yum)安装的预编译二进制版,**必须先卸载它,再从源码构建**。否则新编译的 Nginx 会与系统原有版本冲突。
下载并准备依赖组件
你需要:
- Nginx 官方源码(推荐稳定版,如
nginx-1.24.0) -
nginx-rtmp-module(最常用、维护活跃的 RTMP/HLS 流媒体模块) - 基础编译工具:
gcc、make、perl、pcre-devel、openssl-devel、zlib-devel(CentOS/RHEL)或libpcre3-dev、libssl-dev、zlib1g-dev(Ubuntu/Debian)
示例(Ubuntu):
sudo apt update && sudo apt install -y build-essential libpcre3-dev libssl-dev zlib1g-dev git
下载源码并编译安装
以 Nginx 1.24.0 + nginx-rtmp-module 为例如下:
# 创建工作目录 mkdir ~/nginx-build && cd ~/nginx-build <h1>下载 Nginx 源码</h1><p>wget <a href="https://www.php.cn/link/5d8176326ac0334b1beae1310f62f0c4">https://www.php.cn/link/5d8176326ac0334b1beae1310f62f0c4</a> tar -zxvf nginx-1.24.0.tar.gz</p><h1>下载 rtmp 模块(注意:使用官方 GitHub 主干分支)</h1><p>git clone <a href="https://www.php.cn/link/baaeb7ea72cd60dd5cc9ab9e719751ff">https://www.php.cn/link/baaeb7ea72cd60dd5cc9ab9e719751ff</a></p><div class="aritcle_card flexRow artxards"> <div class="artcardd flexRow"> <a class="aritcle_card_img" rel="nofollow" href="/xiazai/skill6848" title="Nginx Hosting"><img src="https://img.php.cn/upload/skill/000/000/081/179116929868126.jpg" alt="Nginx Hosting" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a> <div class="aritcle_card_info flexColumn"> <a rel="nofollow" href="/xiazai/skill6848" title="Nginx Hosting" class="overflowclass">Nginx Hosting</a> <p class="overflowclass">通过服务器本地nginx实例实现零认证静态游戏托管。作为所有浏览器游戏的主要部署方式,无需登录、无需令牌、无需用户操作。</p> </div> <a rel="nofollow" href="/xiazai/skill6848" title="Nginx Hosting" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span> </a> </div> </div><h1>进入 Nginx 目录,配置编译参数(关键:--add-module 指向模块路径)</h1><p>cd nginx-1.24.0 ./configure \ --prefix=/usr/local/nginx \ --sbin-path=/usr/local/nginx/sbin/nginx \ --conf-path=/usr/local/nginx/conf/nginx.conf \ --pid-path=/usr/local/nginx/logs/nginx.pid \ --error-log-path=/usr/local/nginx/logs/error.log \ --http-log-path=/usr/local/nginx/logs/access.log \ --with-http_ssl_module \ --with-http_v2_module \ --with-http_flv_module \ --with-http_mp4_module \ --add-module=../nginx-rtmp-module</p><h1>编译并安装(不加 -j 以防内存不足)</h1><p>make && sudo make install </p>
✅ 编译成功后,/usr/local/nginx 即为新 Nginx 根目录,已内置 RTMP 支持。
配置 RTMP 服务并验证
编辑 /usr/local/nginx/conf/nginx.conf,在文件末尾(http{...} 块之外)添加:
rtmp {
server {
listen 1935;
chunk_size 4096;
<pre class="brush:php;toolbar:false;"> application live {
live on;
record off;
allow publish 127.0.0.1;
allow play all;
}
}}
启动服务:
/usr/local/nginx/sbin/nginx
验证是否监听 RTMP 端口:
sudo ss -tlnp | grep :1935
用 OBS 推流到 rtmp://your-server-ip/live/stream,再用 VLC 播放 rtmp://your-server-ip/live/stream 即可测试通路。
不复杂但容易忽略:每次升级 Nginx 或模块,都需重新编译;RTMP 模块暂不支持 load_module 动态加载,必须静态编译进主程序。










