国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網(wǎng)站 > Nginx > 正文

通過Nginx服務器獲取大文件MD5值的配置方法

2024-08-30 12:26:18
字體:
來源:轉載
供稿:網(wǎng)友

HTTP協(xié)議新增了Content-MD5 HTTP頭,但是nginx并不支持這個功能,而且官方也明確表示不會增加這項功能,為什么呢?因為每次請求都需要讀取整個文件來計算MD5值,以性能著稱的nginx絕對不愿意干出違背軟件宗旨的事情。但是有些應用中,需要驗證文件的正確性,有些人通過下載當前文件,然后計算MD5值來比對當前文件是否正確。不僅僅浪費帶寬資源也浪費了大把的時間。有需求就有解決方案,網(wǎng)友開發(fā)了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

如果你已經(jīng)安裝了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模塊需要額外安裝),只需在下載的文件后面加上參數(shù)&md5=true即可得到MD5值,使用過程中,參數(shù)可以隨心定義。下面來測試一下。

  # curl test.ttlsa.com/download/1.exe?md5=true    6adda4a06dbad3ac9b53a08f4ff9c4f8

直接得到md5值,與第一種方法得到同樣的MD5。
4. 最后
使用nginx模塊也是一種方法,這種方法有個不足支持,每個請求都需要從新計算一次MD5值。想減小他的壓力,可以在nginx加緩存,或者借用memcache以及使用perl或者lua等模塊,希望大家繼續(xù)支持運維生存時間。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 潼南县| 富川| 高州市| 安乡县| 盈江县| 枞阳县| 昌黎县| 津市市| 正宁县| 铜川市| 桐乡市| 莱西市| 青浦区| 北川| 土默特左旗| 鹤庆县| 色达县| 涟源市| 松阳县| 松江区| 南木林县| 昌宁县| 海阳市| 赫章县| 滦南县| 海城市| 南丰县| 桑日县| 海淀区| 庐江县| 莆田市| 韩城市| 沙雅县| 修文县| 平舆县| 积石山| 榆树市| 临江市| 东光县| 乌拉特后旗| 平远县|