需使用第三方 nginx-http-flv-module 实现 HTTP-FLV 直播,编译时用 --add-module 指定其绝对路径,禁用官方 ngx_http_flv_module;配置中需在 http 块设 location /live { flv_live on; } 并在 rtmp 块启用 live on。

Nginx 源码编译启用 FLV 功能,关键在于区分两种不同模块:
一个是官方自带的 ngx_http_flv_module(仅支持静态 FLV 文件流式播放),
另一个是第三方扩展模块 nginx-http-flv-module(支持 RTMP 推流 + HTTP-FLV 实时直播,含 GOP 缓存、低延迟等特性)。
你实际需要的是后者——它才是直播场景下真正可用的“HTTP-FLV”能力。
编译前确认依赖和源码准备
确保系统已安装基础编译工具和库:
- gcc、make、pcre-devel、zlib-devel、openssl-devel(CentOS/RHEL)
- 或 build-essential、libpcre3-dev、zlib1g-dev、libssl-dev(Ubuntu/Debian)
下载对应版本的 Nginx 源码(如 1.18.0、1.20.2、1.24.x 等稳定版)
同时克隆nginx-http-flv-module仓库(注意使用 gitcode 镜像 或 GitHub 官方源)
configure 阶段必须添加模块路径
进入 Nginx 解压后的源码根目录,执行:
./configure \ --prefix=/usr/local/nginx \ --with-http_ssl_module \ --with-stream \ --with-stream_ssl_module \ --add-module=/path/to/nginx-http-flv-module
⚠️ 注意:
-
--add-module后面必须是绝对路径,指向模块源码的根目录(含config文件) - 不要混用
--with-http_flv_module(那是官方静态模块,与直播无关) - 若需支持 HTTPS 推拉流或 TCP 层转发(如 RTMP over TLS),
--with-stream和--with-stream_ssl_module建议一并开启
编译安装并验证
make && sudo make install
安装完成后检查模块是否生效:
/usr/local/nginx/sbin/nginx -V 2>&1 | grep -o "nginx-http-flv-module"
有输出即表示模块已成功集成。
再运行 nginx -t 确保配置语法无误,之后启动服务即可。
配置文件里要启用 live 模式
模块编译进去了,但默认不工作。必须在 nginx.conf 的 http 块中配置支持 FLV 直播的 location:
location /live {
flv_live on; # 关键:开启 HTTP-FLV 直播流支持
chunked_transfer_encoding on;
add_header 'Access-Control-Allow-Origin' '*';
}同时,RTMP 推流端口(如 rtmp://your-ip:1935/flv/stream)需在 rtmp 块中定义,且 application flv { live on; } 不可少。
不复杂但容易忽略:模块编译只是第一步,后续配置、端口开放、跨域头、推流工具调试缺一不可。


















