有关nginx搭建图片视频服务器的两个亲身小故事

1 前言

首先是俩故事:

1.1 关于视频

好几年前,我还在上上家公司就职的时候,工作电脑是不连外网的,内网开发,真滴难受,查啥资料的时候,只能用手机。有啥不会的,查到代码了,只能对着一个一个敲。

有一天,俺们接待了一个客户,想给他看我们新产品的的宣传视频,但是视频刚弄好,还在内网,他们坐在会议室聊着天等着看视频,俺们老大出来取视频,拿着笔记本,傻愣愣的,视频在内网,台式机又全部把usb口屏蔽了。忒紧急,不晓得咋办,从内网取东西,又需要邮件一层层审批。这个时候,俺站出来了,用nginx将视频通过我们和三方联调开放的端口转发到外网了,客户看完了,很高兴。结果我挨了一顿批,说我不符合公司流程啥的,最后俺老大把责任担了。。。过程很美好,结果不咋地。

1.2 关于图片

还有一次,是在之后一家公司,做车抵贷业务的,用户信息页面,显示人的,车的,发票的,行驶证的,乱七八糟加起来要显示50多张图片,上传是客户上传的,但是运营要在审批页查看照片审批。现在的手机都贼好,相机拍摄的都7M,8M的。一个页面光图片显示都要400M,这还是一个用户的,当时图片是在阿里的OSS上存储的,下载下来极慢。这时候,老大不高兴了,运营人员审批一个人的资料得5分钟,四分半在等图片加载,技术是干什么吃的。然后压力来到了前端哥们那边,在上传图片的时候进行压缩。但是最多到2M3M左右,实在下不去了。苦苦研究了好几天偶然被我听到了,我就说这用nginx不是很美吗,直接搞一个本地静态资源服务器,搁本地存图片,直接内网访问不是很快。 老大也很开心,就这么搞出来也很舒服,但是问题是,服务器1T磁盘,用户量也不小,可能没几天就满了。但是没几天,国家整治小贷公司,用户不还款,没等到服务器满,公司没了。过程也很美好,结果更不咋地,但这次不怪我。

下面我就简单介绍下这两个部署步骤吧。

2 搭建图片服务器

这个简单,配置一下就好,但要注意gzip的压缩对图片视频等资源是没用的,开启了不但不会减小还占用cpu资源。这里为了演示,直接将图片文件放在html下了。

image.png

2.1 配置文件

server {
    listen       8081;
    server_name  somename  alias  another.alias;
        location /image {
            root   html;
            autoindex on;
        }
}

2.2 显示效果

直接地址加端口加文件名访问

139.155.71.11:8081/image/test1.jpeg

image.png

3 搭建视频服务器

这个就有几点需要注意了

  1. 想要在chrome播放,视频编码必须是H264的,其他的都是黑屏,只有声音,没有图像。
  2. 需要添加mp4模块

3.1 添加视频模块

备份nginx的配置文件,注意,一定要备份,make的时候搞没了你会伤心的。

扫描二维码关注公众号,回复: 14393354 查看本文章

在nginx的解压目录执行如下命令,当然,要是本来就有其他的模块,也要一起添加上然后执行。

./configure --with-http_mp4_module

然后

make
make install

将备份的配置文件放好,重启nginx就行

3.2 配置文件

server {
    listen       8082;
    server_name  somename  alias  another.alias;

    location /video {
        root   html;
        mp4;
        mp4_buffer_size 1m;#处理mp4初始内存大小
        mp4_max_buffer_size 50m;#处理mp4最大内存大小
        limit_rate 150k; #限速
        limit_rate_after 20m;   #在20m后限速
    }
}

3.3 展示

访问地址加端口加文件名就可以访问到想要的视频了。

139.155.71.11:8082/video/test4.mp4

视频效果如下:

image.png

其实这也可以用来搭建一个自己的知识库,相信每个程序员都有收藏好多看的不看的教学视频,直接用nginx搭建一个视频库,放在本地一个不用的电脑上,只要在局域网内,手机,平板,电脑都可以访问观看,是不是比移动硬盘方便多了。

我正在参加「创意开发 投稿大赛」详情请看:掘金创意开发大赛来了!

猜你喜欢

转载自juejin.im/post/7123590602553294862