unknown directive “mp4“ in /etc/nginx/nginx.conf

一、问题背景

想通过nginx实现mp4格式视频的播放功能。
在nginx配置文件(/etc/nginx/nginx.conf)中的配置如下:

server{
   listen 801;  #监听端口
   location ~* .*\.mp4 {
        root /data/video/;   #视频保存的目录
        mp4;
        mp4_buffer_size 1m;#处理mp4初始内存大小
        mp4_max_buffer_size 50m;#处理mp4最大内存大小
   }
}

其中, /data/video/ 目录下存放 mp4 格式的视频文件。


二、问题现象

使用如下命令重启nginx,出现报错。

1、nginx重启命令
systemctl restart nginx
2、nginx报错信息

通过查看nginx的错误日志,可以看到报错信息:unknown directive “mp4” in /etc/nginx/nginx.conf

错误信息翻译为: /etc/nginx/nginx.conf中的未知指令“mp4”
在这里插入图片描述

三、问题原因

网上找了一些资料,有说是配置文件的编码不是UTF-8导致的,但是通过如下命令,可以看到 nginx.conf 文件的编码格式就是 UTF-8。

file -i nginx.conf

在这里插入图片描述

由此可见,并非文件编码问题。

其实,从nginx的错误日志中可以看到线索,unknown directive “mp4” (未知指令mp4”),说明 nginx 缺少 http_mp4 模块。


四、解决方案

重新编译安装nginx,并在 ./configure 命令后追加 –with-http_mp4_module

1、进入nginx的源文件目录
cd /usr/local/nginx-1.22.1

/usr/local/nginx-1.22.1 是个人的nginx源文件目录,此目录根据实际情况而定。

2、配置增加 --with-http_mp4_module 模块
./configure --prefix=/etc/nginx \
            --sbin-path=/usr/sbin/nginx \
            --modules-path=/usr/lib64/nginx/modules \
            --conf-path=/etc/nginx/nginx.conf \
            --error-log-path=/var/log/nginx/error.log \
            --pid-path=/var/run/nginx.pid \
            --lock-path=/var/run/nginx.lock \
            --user=nginx \
            --group=nginx \
            --build=CentOS \
            --http-log-path=/var/log/nginx/access.log \
            --with-http_stub_status_module\
            --add-module=/usr/local/modsecurity-nginx \
            --with-http_ssl_module \
            --with-http_mp4_module

其中:
–add-module=/usr/local/modsecurity-nginx 用于实现ModSecurity安全加固的,如果不涉及,可以去除此行;
–with-http_ssl_module 模块用于实现 http_ssl 功能,如果不涉及,可以去除此行。

3、编译安装 nginx
make && make install
4、重启 nginx 服务
systemctl restart nginx
5、查看nginx 状态
systemctl status nginx
6、查看nginx模块信息
nginx -V

增加 http_mp4 模块的前后,对比效果如下:
在这里插入图片描述

7、补充

如果想增加对“flv”格式的支持,同理,需要在nginx 的配置命令 ./configure 中增加 http_flv 模块,重新编译nginx。

--with-http_flv_module

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值