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">
<div class="artcardd flexRow">
<a class="aritcle_card_img" href="/xiazai/skill6848" title="Nginx Hosting"><img
src="https://img.php.cn/upload/skill/000/000/081/179116929868126.jpg" alt="Nginx Hosting" ></a>
<div class="aritcle_card_info flexColumn">
<a href="/xiazai/skill6848" title="Nginx Hosting">Nginx Hosting</a>
<p>通过服务器本地nginx实例实现零认证静态游戏托管。作为所有浏览器游戏的主要部署方式,无需登录、无需令牌、无需用户操作。</p>
</div>
<a 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
✅ 编译成功后,/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 动态加载,必须静态编译进主程序。

















