このモジュールはNGINXのディストリビューションである Tengine と一緒に配布されており、eコマース/オークションサイトTaobao.comで使われています。このディストリビューションはNGINXの舞台では新しい幾つかのモジュールを含みます。ngx_http_slice_module
モジュールはそのうちの一つです。
このモジュールは逆バイト範囲リクエストヘッダと考えることができます。その場でgzip圧縮を使いながら、NGINXが大きなファイルを小さな部分(バイト範囲)にスライスできるための主要なユーティリティです。
代表的な例は、帯域の利用を最小限にしながら大きなファイルをダウンロードすることができるようにすることです。これは各リンクがファイルの幅によって分割されたファイルの異なる領域を示すリンクによってファイルが販売されるための道具としても使われるかも知れません。
Other use would be to use a generic CSS file and use only part of it for each section of a site. Granted that byte-range slicing isn’t the most intuitive for such.
Note also that using arguments is more useful than byte-ranges in the sense that they can be set in a normal link, while byte ranges require a special HTTP header.
設定例:
location ^~ /video-dump/ {
slice; # enable slicing
slice_start_arg s;
slice_end_arg e;
}
つまり、以下のようにファイルの最初の1kをリクエストします:
http://example.com/video-dump/large_vid.mp4?s=0&e=1024
注意
s=0
, start at 0 and e=1024
, stop at 1024 bytes (1k).
このドキュメントはもともとAntónio P. P. Almeidaによって書かれました。
構文: | slice_arg_begin string |
---|---|
デフォルト: | start |
コンテキスト: | http, server, location |
バイトのstartの領域のリクエストを定義する引数を定義します。
構文: | slice_arg_end string |
---|---|
デフォルト: | end |
コンテキスト: | http, server, location |
バイトのendの領域のリクエストを定義する引数を定義します。
構文: | slice_header string |
---|---|
デフォルト: | none |
コンテキスト: | http, server, location |
NGINXによって提供される各スライスのheaderとして使用される文字列を定義します。
構文: | slice_header_first [on|off] |
---|---|
デフォルト: | on |
コンテキスト: | http, server, location |
off
に設定し、ファイルの最初の バイトをリクエストすると、ヘッダが提供されません 。
このディレクティブは残りのスライスから最初のスライスを区別するために特に有用です。最初のスライスはヘッダを持たないものです。
全てのオプションを試す幾つかの例です。
location ^~ /dbdumps/ { slice; # enable slicing slice_start_arg first; slice_end_arg last; slice_header '-- **db-slice-start**'; slice_header_first off; }そして、リクエストはこのようになります:
http://example.com/dbdumps/somedb.sql?first=0&last=1048576最初の1Mを送信し、
*-- **db-slice-start*** ヘッダー
をスキップします。
location ^~ /dbdumps/ { slice; # enable slicing slice_start_arg first; slice_end_arg last; slice_header '-- **db-slice-start**'; slice_header_first off; slice_footer '-- **db-slice-end**'; }フッターを送信するという意味で以前とは異なります。
location ^~ /dbdumps/ { slice; # enable slicing slice_start_arg first; slice_end_arg last; slice_header '-- **db-slice-start**'; slice_header_first off; slice_footer '-- **db-slice-end**'; slice_footer_last off; }そして、リクエストはこのようになります:
http://example.com/dbdumps/somedb.sql?first=0&last=1048576最初の1Mを送信し、
*-- **db-slice-start*** ヘッダー
をスキップします。ファイルが200MBの場合、以下を使って最後のスライスを取得します:
http://example.com/dbdumps/somedb.sql?first=208666624&last=209715200この最後のスライスはフッターを持ちません。
--add-module=/path/to/nginx-http-slice
<a href="http://example.com/datadumps/dump0.sql?start=0&end=4096"/>db dump</a>
Thanks to Joshua Zhu and the Taobao platform engineering team for releasing tengine.
Copyright (C) 2010-2012 Alibaba Group Holding Limited
修正の如何に関係なくソースおよびバイナリ形式での再配布および使用は以下の条件に合う限り許可されます:
THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.