欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

通過(guò)Nginx服務(wù)器獲取大文件MD5值的配置方法

 更新時(shí)間:2016年01月22日 09:37:12   投稿:goldensun  
這篇文章主要介紹了通過(guò)Nginx服務(wù)器獲取大文件MD5值的配置方法,同時(shí)文中也附帶了對(duì)大文件下載優(yōu)化的介紹,需要的朋友可以參考下

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

  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;
    }
  }

所有請(qǐng)求download的請(qǐng)求,都會(huì)在響應(yīng)http頭部增加Content-MD5,值為這個(gè)文件的MD5,看如下測(cè)試:


  # 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,這個(gè)就是1.exe文件的MD5值.
3.2 直接響應(yīng)MD5值到內(nèi)容中

  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值,使用過(guò)程中,參數(shù)可以隨心定義。下面來(lái)測(cè)試一下。

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

直接得到md5值,與第一種方法得到同樣的MD5。
4. 最后
使用nginx模塊也是一種方法,這種方法有個(gè)不足支持,每個(gè)請(qǐng)求都需要從新計(jì)算一次MD5值。想減小他的壓力,可以在nginx加緩存,或者借用memcache以及使用perl或者lua等模塊,希望大家繼續(xù)支持運(yùn)維生存時(shí)間。
項(xiàng)目地址:https://github.com/cfsego/file-md5
項(xiàng)目文檔:https://github.com/cfsego/file-md5/blob/master/README

PS:nginx大文件下載優(yōu)化
默認(rèn)情況下proxy_max_temp_file_size值為1024MB,也就是說(shuō)后端服務(wù)器的文件不大于1G都可以緩存到nginx代理硬盤(pán)中,如果超過(guò)1G,那么文件不緩存,而是直接中轉(zhuǎn)發(fā)送給客戶(hù)端.如果proxy_max_temp_file_size設(shè)置為0,表示不使用臨時(shí)緩存。
在大文件的環(huán)境下,如果想啟用臨時(shí)緩存,那么可以修改配置,值改成你想要的。
修改nginx配置

location /
 {
 ...
 proxy_max_temp_file_size 2048m;
 ...
 }

重啟nginx

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

相關(guān)文章

  • HAProxy和Nginx搭建負(fù)載均衡器的實(shí)現(xiàn)

    HAProxy和Nginx搭建負(fù)載均衡器的實(shí)現(xiàn)

    負(fù)載均衡器是一個(gè)常用于分布式計(jì)算和網(wǎng)絡(luò)應(yīng)用中的系統(tǒng)組件,主要用于將客戶(hù)端的請(qǐng)求分發(fā)到多個(gè)后端服務(wù)器上,以實(shí)現(xiàn)高可用性、高性能和可擴(kuò)展性,本文主要介紹了HAProxy和Nginx搭建負(fù)載均衡器的實(shí)現(xiàn),感興趣的可以了解一下,感興趣的可以了解一下
    2023-11-11
  • nginx?攔截指定ip訪(fǎng)問(wèn)指定url的實(shí)現(xiàn)示例

    nginx?攔截指定ip訪(fǎng)問(wèn)指定url的實(shí)現(xiàn)示例

    本文主要介紹了nginx?攔截指定ip訪(fǎng)問(wèn)指定url的實(shí)現(xiàn)示例,使用$http_x_forwarded_for變量來(lái)獲取客戶(hù)端的真實(shí)IP地址,感興趣的可以了解一下
    2024-12-12
  • OpenResty中實(shí)現(xiàn)按QPS、時(shí)間范圍、來(lái)源IP進(jìn)行限流的方法

    OpenResty中實(shí)現(xiàn)按QPS、時(shí)間范圍、來(lái)源IP進(jìn)行限流的方法

    OpenResty是一個(gè)基于Nginx與Lua的高性能Web平臺(tái),它通過(guò)LuaJIT在Nginx中運(yùn)行高效的Lua腳本和模塊,可以用來(lái)處理復(fù)雜的網(wǎng)絡(luò)請(qǐng)求,并且支持各種流量控制和限制的功能,這篇文章主要介紹了OpenResty中實(shí)現(xiàn)按QPS、時(shí)間范圍、來(lái)源IP進(jìn)行限流,需要的朋友可以參考下
    2024-02-02
  • Nginx服務(wù)器高性能優(yōu)化的配置方法小結(jié)

    Nginx服務(wù)器高性能優(yōu)化的配置方法小結(jié)

    這篇文章主要介紹了Nginx服務(wù)器高性能優(yōu)化的配置方法小結(jié),包括一些內(nèi)核參數(shù)的優(yōu)化介紹,需要的朋友可以參考下
    2015-12-12
  • 修改Nginx與Apache上傳文件大小限制

    修改Nginx與Apache上傳文件大小限制

    這篇文章主要介紹了修改Nginx與Apache上傳文件大小限制,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-10-10
  • Nginx 如何部署指定文件夾下的項(xiàng)目(本地測(cè)試)

    Nginx 如何部署指定文件夾下的項(xiàng)目(本地測(cè)試)

    這篇文章主要介紹了Nginx 如何部署指定文件夾下的項(xiàng)目(本地測(cè)試),分為配置vue.config.js,指定生成環(huán)境的包,配置路由模式為hash(history模式刷新后,找不到頁(yè)面),本文講解的非常詳細(xì),需要的朋友可以參考下
    2024-01-01
  • Nginx端口映射配置方法

    Nginx端口映射配置方法

    這篇文章主要介紹了Nginx端口映射配置方法和多端口映射,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • 詳解Nginx實(shí)戰(zhàn)之讓用戶(hù)通過(guò)用戶(hù)名密碼認(rèn)證訪(fǎng)問(wèn)web站點(diǎn)

    詳解Nginx實(shí)戰(zhàn)之讓用戶(hù)通過(guò)用戶(hù)名密碼認(rèn)證訪(fǎng)問(wèn)web站點(diǎn)

    這篇文章主要介紹了詳解Nginx實(shí)戰(zhàn)之讓用戶(hù)通過(guò)用戶(hù)名密碼認(rèn)證訪(fǎng)問(wèn)web站點(diǎn),有興趣的可以了解一下。
    2016-11-11
  • Nginx和GeoIP模塊讀取IP所在的地域信息方法

    Nginx和GeoIP模塊讀取IP所在的地域信息方法

    今天小編就為大家分享一篇Nginx和GeoIP模塊讀取IP所在的地域信息方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-08-08
  • Nginx代理Partainer的實(shí)現(xiàn)

    Nginx代理Partainer的實(shí)現(xiàn)

    本文主要介紹了Nginx代理Partainer的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07

最新評(píng)論