追加されたHTTPプロトコル
のContent-MD5 HTTPの
ヘッダが、nginxのは、この機能をサポートしていない、と関係者はそれを明確に、なぜ、この機能は増加しないことを作ったのですか?各要求は、ソフトウェアの目的に反することを行うことが絶対に望んでいないMD5値、パフォーマンス知らnginxのを計算するためにファイル全体を読み込む必要があるため。ただし、一部のアプリケーションは、必要性は、現在のファイルをダウンロードすることにより、いくつかの文書の正しさを検証するために、その後、正しい比較で現在のファイルのMD5値を計算します。帯域幅のリソースの無駄も多くの時間を無駄にしているだけでなく。ソリューションは、ユーザーが開発需要がある
ファイル-MD5
モジュールが。1.モジュールファイル-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.インストールモジュールファイル-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のをインストールしている場合は、唯一の「を具体的に参照するファイルのMD5モジュールを追加する必要があり
、サードパーティ製のモジュールをインストールするには、どのようにnginxの
HTTPレスポンスヘッダに追加の設定ファイル-MD5 3.1 MD5に」
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;
}
}
すべての要求は、要求をダウンロードし、HTTPヘッダーMD5に対応しているのContent-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を、これはコンテンツに直接応答で3.2のMD5値1.EXEファイルの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;
}
}
}
ここでは、直接MD5値出力エコーは(エコーモジュールの追加インストールが必要)、ちょうどMD5値を取得するためにダウンロードしたファイル&MD5 = trueを追加パラメータの後ろに、使用時に、パラメータが心を定義することができます。のは、それをテストしてみましょう。
# curl test.ttlsa.com/download/1.exe?md5=true
6adda4a06dbad3ac9b53a08f4ff9c4f8
同じMD5を取得する第1の方法に直接MD5値、。4.最後に、この方法は、nginxのモジュールが使用され、この方法は不十分なサポートを有し、各要求は、MD5値の再計算を必要とします。彼に圧力を減らしたい、あなたはキャッシュnginxのを追加したり、借りて、memcacheのLUAやPerlモジュールを使用することができ、我々はあなたが運転して生存期間の維持を支援していきたいと考えています。プロジェクトアドレスします。https://github.com/cfsego/file-md5プロジェクトのドキュメントします。https://github.com/cfsego/file-md5/blob/master/READMEウェブサイト:生存時間の運用・保守
ます。https://my.oschina.net/766/blog/211249で再現