Accept cookies for analytics, social media, and advertising, or learn more and adjust your preferences. These cookies are on by default for visitors outside the UK and EEA. Privacy Notice.
このモジュールはNGINXのディストリビューションである Tengine と一緒に配布されており、eコマース/オークションサイトTaobao.comで使われています。このディストリビューションはNGINXの舞台では新しい幾つかのモジュールを含みます。ngx_http_slice_module
モジュールはそのうちの一つです。
このモジュールは逆バイト範囲リクエストヘッダと考えることができます。その場でgzip圧縮を使いながら、NGINXが大きなファイルを小さな部分(バイト範囲)にスライスできるための主要なユーティリティです。
代表的な例は、帯域の利用を最小限にしながら大きなファイルをダウンロードすることができるようにすることです。これは各リンクがファイル範囲によって分割されたファイルの様々な領域を示すビデオファイルを販売されるための道具としても使われるかも知れません。
他の用途としては、一般的なCSSファイルを使い、サイトの各セクションでその一部のみを使用することです。バイトの範囲のスライスがそのような場合に最も直感的ではないことを認めました。
また、通常のリンクで設定できるという意味では、引数の使用はバイトの範囲よりも便利ですが、バイトの範囲は特別なHTTP ヘッダを必要とします。
設定例:
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>
tengineをリリースしてくれたJoshua ZhuとTaobaoプラットフォームエンジニアリングチームに感謝します。
Copyright (C) 2010-2012 Alibaba Group Holding Limited
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
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.