服务器 
首页 > 服务器 > 浏览文章

通过Nginx服务器获取大文件MD5值的配置方法

(编辑:jimmy 日期: 2024/11/5 浏览:3 次 )

HTTP协议新增了Content-MD5 HTTP头,但是nginx并不支持这个功能,而且官方也明确表示不会增加这项功能,为什么呢?因为每次请求都需要读取整个文件来计算MD5值,以性能著称的nginx绝对不愿意干出违背软件宗旨的事情。但是有些应用中,需要验证文件的正确性,有些人通过下载当前文件,然后计算MD5值来比对当前文件是否正确。不仅仅浪费带宽资源也浪费了大把的时间。有需求就有解决方案,网友开发了file-md5模块。
1. 下载模块file-md5

  # cd /usr/local/src
  # wget https://github.com/cfsego/file-md5/archive/master.zip -O file-md5-master.zip
  # unzip file-md5-master.zip

2. 安装模块file-md5

  # wget http://nginx.org/download/nginx-1.4.2.tar.gz
  # tar -xzf nginx-1.4.2.tar.gz
  # cd nginx-1.4.2
  # ./configure --prefix=/usr/local/nginx-1.4.2 --add-module=../file-md5-master
  # make
  # make isntall

如果你已经安装了nginx,仅需要增加file-md5模块即可。

3. 配置file-md5
3.1 MD5追加到http响应头中

  server {
    listen    80;
    server_name test.ttlsa.com;
    root /data/site/test.ttlsa.com;
  
    # for add content-md5 to http header
    location ~ /download
    {
        add_header  Content-MD5  $file_md5;
    }
  }

所有请求download的请求,都会在响应http头部增加Content-MD5,值为这个文件的MD5,看如下测试:


  # curl -I test.ttlsa.com/download/1.exe  
  HTTP/1.1 200 OK
  Server: nginx
  Date: Wed, 26 Feb 2014 03:00:05 GMT
  Content-Type: application/octet-stream
  Content-Length: 1535488
  Last-Modified: Mon, 24 Feb 2014 10:08:10 GMT
  Connection: keep-alive
  ETag: "530b1a0a-176e00"
  Content-MD5: 6adda4a06dbad3ac9b53a08f4ff9c4f8
  Accept-Ranges: bytes

大家可以看到Content-MD5: 6adda4a06dbad3ac9b53a08f4ff9c4f8,这个就是1.exe文件的MD5值.
3.2 直接响应MD5值到内容中

  server {
    listen    80;
    server_name test.ttlsa.com;
    root /data/site/test.ttlsa.com;
 
    # for add content-md5 to http header
    location ~ /download
    {
      if ( $arg_md5 ~* "true" ){
        echo $file_md5;
      }
    }
  }

这边直接使用echo输出MD5值(echo模块需要额外安装),只需在下载的文件后面加上参数&md5=true即可得到MD5值,使用过程中,参数可以随心定义。下面来测试一下。

  # curl test.ttlsa.com/download/1.exe"htmlcode">
location /
 {
 ...
 proxy_max_temp_file_size 2048m;
 ...
 }

重启nginx

# /usr/local/nginx-1.7.0/sbin/nginx -s reload

上一篇:Nginx服务器基础的安全配置与一些安全使用提示
下一篇:HipChat上传文件报未知错误的原因分析及解决方案
一文看懂荣耀MagicBook Pro 16
荣耀猎人回归!七大亮点看懂不只是轻薄本,更是游戏本的MagicBook Pro 16.
人们对于笔记本电脑有一个固有印象:要么轻薄但性能一般,要么性能强劲但笨重臃肿。然而,今年荣耀新推出的MagicBook Pro 16刷新了人们的认知——发布会上,荣耀宣布猎人游戏本正式回归,称其继承了荣耀 HUNTER 基因,并自信地为其打出“轻薄本,更是游戏本”的口号。
众所周知,寻求轻薄本的用户普遍更看重便携性、外观造型、静谧性和打字办公等用机体验,而寻求游戏本的用户则普遍更看重硬件配置、性能释放等硬核指标。把两个看似难以相干的产品融合到一起,我们不禁对它产生了强烈的好奇:作为代表荣耀猎人游戏本的跨界新物种,它究竟做了哪些平衡以兼顾不同人群的各类需求呢?
友情链接:杰晶网络 DDR爱好者之家 南强小屋 黑松山资源网 白云城资源网 SiteMap