まれなnginx機能:mod_zip

会話は nginxのまれで有用なモジュールについてのものなので、nginxのオンラインZIPファイルパッカーについて説明します。 マルチスレッドのダウンロードとファイルの再開が可能な圧縮機能を使用して、指定されたファイルのリストからオンザフライでZIPアーカイブを作成できます。





使用例



ユーザーファイルを保存するための素晴らしいサービスがあります。 ファイル共有の機能の1つは、トレントファイルをアップロードできることです。システムがそれをダウンロードし、サーバー自体にアップロードします。 多くの場合、ダウンロードしたトレントは10〜100 MBの数十のファイルに分割され、それらをすべてダウンロードするために、ユーザーは各ファイルを10〜100回クリックしてアーカイブ全体をダウンロードする必要があります。 しかし、nginx mod_zipの助けを借りて、ユーザーは1回クリックするだけでダウンロード速度を楽しむことができます;)(システムにそのようなファイルを解凍するように教える方が簡単だと言う人-Zip Bombについて読んでください)



長所



1.スペースとCPU時間を節約して、静的ZIPファイルを作成します。

2.このようなZIPファイルのダウンロードは、nginxで単一の静的ファイルをダウンロードするよりも多くのリソースを必要としません



短所



1.ファイルの正確なサイズ、パス、およびcrc32を知る必要があります。 (crc32を指定しない場合、再開とマルチスレッドはサポートされません)

2.バージョン1.1.4 は、4 GBを超える合計アーカイブウェイトをサポートしていません 。 これを修正するコードは、レビューのためにプラグインの作成者に既に送信されています。 habrazerへのパッチをご利用いただきありがとうございます。 このコードはまもなくメインブランチに含まれます。

3.バージョン1.1.5で修正することを約束した、マルチスレッドダウンロードに確認済みのバグがあります(ファイルがダウンロードされない場合があります)



使用を開始するには?



1. mod_zip 1.1.4をダウンロードし、キー--add-module = / path / to / mod_zip-1.xでnginxを再コンパイルします

2.スクリプトで、ヘッダー「X-Archive-Files:zip」を渡します(したがって、mod_zipは作業を開始する時期であることを理解します)

3.フォームの必要なファイルをリストします。



1034ab38 428 /foo.txt My Document1.txt

83e8110b 100339 /bar.txt My Other Document1.txt



4. zipファイルをダウンロードしてお楽しみください。



旅行したレーキ



1.転送したファイルの少なくとも1つがディスク上にない場合、アーカイブ全体が破損してダウンロードされるため、ZIPファイルの要求に応じてファイルの可用性を確認する必要があります。

2.ファイルサイズを誤って転送した場合、アーカイブは壊れてダウンロードされます。

3.異なるユーティリティは異なるcrc32値を生成します。 パールで書かれたcrc32ユーティリティを含む「perl-Archive-Zip」パッケージ(Fedora)に決めました。



PS mod_zipの新しいバージョンのリリースについて-私はnginxメーリングリストに報告します



All Articles