nginx rtmp centos
Nginx RTMP + CentOS:从安装到搭建直播服务全指南
在流媒体服务领域,Nginx 凭借轻量高效、配置灵活的特性,成为中小型直播场景的首选解决方案。结合 CentOS 系统的稳定性,Nginx 配合 RTMP 模块可快速搭建支持推流、拉流、HLS 切片的直播服务。本文将从环境准备到实战配置,手把手教你完成从安装到开播的全流程。
为什么选择 Nginx RTMP?
相比 FFmpeg、SRS 等工具,Nginx RTMP 模块的优势在于:
- 低资源消耗:Nginx 单进程模型对服务器负载友好,适合轻量级直播场景;
- 多协议支持:原生支持 RTMP(推流)、HLS(HTTP 拉流)、MP4 点播;
- 配置简洁:通过 Nginx 配置文件即可完成推流地址、权限控制、录制等功能;
- 社区成熟:nginx-rtmp-module 模块开源免费,兼容性强,适配主流推流工具(如 OBS、FFmpeg)。
环境准备:CentOS 系统与依赖安装
- 系统要求:CentOS 7/8(本文以 CentOS 7 为例),确保已安装
gcc、gcc-c++、make等编译工具。 - 安装依赖:
yum install -y gcc gcc-c++ make pcre-devel zlib-devel openssl-devel wget注:若需支持 MP4 或 HLS 切片,需额外安装
ffmpeg(可选)。
编译安装 Nginx 与 RTMP 模块
Nginx 需手动编译以集成 RTMP 模块,步骤如下:
1. 下载 Nginx 源码与 RTMP 模块
# 下载 Nginx 源码(建议选择稳定版,如 1.21.6)
wget http://nginx.org/download/nginx-1.21.6.tar.gz
tar -zxvf nginx-1.21.6.tar.gz
cd nginx-1.21.6
# 克隆 RTMP 模块源码(需提前安装 git)
git clone https://github.com/arut/nginx-rtmp-module.git
2. 编译配置与安装
./configure \
--prefix=/usr/local/nginx \
--with-http_mp4_module \ # 支持 MP4 点播
--add-module=./nginx-rtmp-module \ # 集成 RTMP 模块
--with-http_ssl_module \ # 可选,支持 HTTPS
--with-http_v2_module # 可选,支持 HTTP/2
make -j4 # 4 核并行编译,加快速度
make install
3. 验证安装
/usr/local/nginx/sbin/nginx -v # 查看版本,出现 1.21.6 即成功
核心配置:推流与拉流规则
Nginx 配置文件位于 /usr/local/nginx/conf/nginx.conf,需在 http 模块外添加 RTMP 配置:
rtmp {
server {
listen 1935; # RTMP 推流端口
chunk_size 4096; # 数据分片大小
application live { # 定义直播应用
live on; # 开启直播功能
record all; # 录制推流数据(可选)
record_path /var/nginx/record; # 录制文件路径
allow publish all; # 允许所有推流(生产环境建议限制 IP)
allow play all; # 允许所有拉流
}
}
}
http {
server {
listen 8080; # HLS 拉流端口
location /hls {
alias /var/nginx/hls; # HLS 切片文件路径
expires 30d; # 缓存有效期
add_header Cache-Control no-cache;
}
}
}

关键参数说明:
rtmp.server.listen 1935:推流默认端口(RTMP 协议标准端口);application live:直播应用名称,推流地址格式为rtmp://服务器IP:1935/live/流ID;http.location /hls:HLS 切片服务地址,拉流时可通过http://服务器IP:8080/hls/流ID.m3u8访问。
推流与拉流实战测试
1. 推流测试(以 FFmpeg 为例)
ffmpeg -re -i test.mp4 -c:v libx264 -c:a aac -f flv \
rtmp://服务器IP:1935/live/myStream # 推流到 live 应用,流ID为 myStream
2. 拉流测试
- RTMP 拉流:用 VLC 播放器打开
rtmp://服务器IP:1935/live/myStream; - HLS 拉流:用浏览器打开
http://服务器IP:8080/hls/myStream.m3u8(需服务器支持 CORS)。
常见问题与解决
- 编译失败:检查
nginx-rtmp-module版本是否与 Nginx 兼容(如 Nginx 1.21.x 搭配最新模块); - 推流成功但拉流卡顿:调整
hls_fragment 10(HLS 切片时长,建议 5-10 秒); - 权限错误:确保
/var/nginx/record目录权限为nginx:nginx,或临时开放chmod 777测试。
应用场景扩展
- 短视频切片:通过
hls模块生成.m3u8切片,适配移动端播放; - 多平台分发:结合 CDN 工具(如阿里云 CDN),将推流地址转发至全球节点;
- 防盗链策略:生产环境需在
allow publish中添加 IP 白名单,或通过签名 URL 验证推流合法性。
通过本文,你已掌握 Nginx RTMP 在 CentOS 上的核心配置与实战技巧。从基础安装到复杂场景,这套方案既能满足个人直播需求,也能支撑小型企业的直播服务。若需进一步优化,可结合 ffmpeg 动态转码、ffprobe 实时监控流状态,让直播服务更稳定高效。

上一篇





