ngx_http_ssi_module モジュール

設定例
ディレクティブ
     ssi
     ssi_last_modified
     ssi_min_file_chunk
     ssi_silent_errors
     ssi_types
     ssi_value_length
SSI コマンド
組み込み変数

ngx_http_ssi_module モジュールは応答が通過するときにSSI (Server Side Includes) コマンドを処理するフィルターです。現在のところ、サポートされているSSIコマンドは不完全です。

設定例

location / {
    ssi on;
    ...
}

ディレクティブ

構文: ssi on | off;
デフォルト:
ssi off;
コンテキスト: http, server, location, if in location

応答の中でのSSIコマンドの処理を有効または無効にします。

構文: ssi_last_modified on | off;
デフォルト:
ssi_last_modified off;
コンテキスト: http, server, location

このディレクティブはバージョン1.5.1から導入されました。

応答のキャッシュを容易にするために、SSI処理時に元の応答の"Last-Modified"ヘッダフィールドを保持することができます。

デフォルトでは、応答のコンテンツは処理時に修正されるため、そのヘッダは削除されます。そして、元の応答とは無関係に変更された動的生成された要素あるいはパーツを含むかもしれません。

構文: ssi_min_file_chunk size;
デフォルト:
ssi_min_file_chunk 1k;
コンテキスト: http, server, location

sendfileを使って開始することに意味があるディスクに格納された応答の一部の最小サイズを設定します。

構文: ssi_silent_errors on | off;
デフォルト:
ssi_silent_errors off;
コンテキスト: http, server, location

有効にされた場合は、SSI処理中にエラーが起きた時に出力される"[an error occurred while processing the directive]"文字列を抑制します。

構文: ssi_types mime-type ...;
デフォルト:
ssi_types text/html;
コンテキスト: http, server, location

"text/html"に加えて指定されたMIMEタイプの応答の中でSSIコマンドの処理を有効にします。特別な値"*"は全てのMIMEタイプに一致します(0.8.29)。

構文: ssi_value_length length;
デフォルト:
ssi_value_length 256;
コンテキスト: http, server, location

SSIコマンドの中のパラメータの値の最大長を設定します。

SSI コマンド

SSI コマンドには以下の一般的な書式があります:

<!--# command parameter1=value1 parameter2=value2 ... -->

次のコマンドがサポートされています:

block
include コマンドの中でスタブとして使うことができるブロックを定義します。ブロックには他のSSIコマンドを含むことができます。このコマンドは次のパラメータを持ちます:
名前
ブロック名
例:
<!--# block name="one" -->
stub
<!--# endblock -->
config
はっきり言うと、SSI処理で使われるパラメータを設定します:
errmsg
SSI処理中にエラーが発生した場合に出力される文字列デフォルトでは、次の文字列が出力されます:
[an error occurred while processing the directive]
timefmt
日付と時間を出力するために使われるstrftime() 関数に渡されるフォーマット文字列デフォルトでは、次のフォーマットが使われます:
"%A, %d-%b-%Y %H:%M:%S %Z"
"%s"フォーマットは時間を秒数で出力するのに適しています。
echo
変数の値を出力します。このコマンドは次のパラメータを持ちます:
var
変数名
encoding
符号化メソッド可能な値は、none, urlentityです。デフォルトでは、 entity が使われます。
デフォルト:
変数が未定義の場合に出力するために設定される非標準のパラメータです。By default, “(none)” is output. コマンド
<!--# echo var="name" default="no" -->
次のコマンドの連続を置き換えます:
<!--# if expr="$name" --><!--# echo var="name" --><!--#
       else -->no<!--# endif -->
if
条件付の包含を実施します。次のコマンドがサポートされています:
<!--# if expr="..." -->
...
<!--# elif expr="..." -->
...
<!--# else -->
...
<!--# endif -->
現在のところ、レベル一つの入れ子だけがサポートされています。このコマンドは次のパラメータを持ちます:
expr
表現表現には:
  • 変数の存在チェック:
    <!--# if expr="$name" -->
    
  • テキストの変数の比較:
    <!--# if expr="$name = text" -->
    <!--# if expr="$name != text" -->
    
  • 正規表現の変数の比較:
    <!--# if expr="$name = /text/" -->
    <!--# if expr="$name != /text/" -->
    
textに変数が含まれる場合、その値は置き換えられます。正規表現には、後で変数によって使うことができる、位置と名前のキャプチャを含むことができます。例えば:
<!--# if expr="$name = /(.+)@(?P<domain>.+)/" -->
    <!--# echo var="1" -->
    <!--# echo var="domain" -->
<!--# endif -->
include
他のリクエストの結果を応答に含むこのコマンドは次のパラメータを持ちます:
ファイル
含まれたファイルを指定します。例えば:
<!--# include file="footer.html" -->
virtual
含まれたリクエストを指定します。例えば:
<!--# include virtual="/remote/body.php?argument=value" -->
一つのページで指定され、プロキシされたあるいはFastCGI/uwsgi/SCGI/gRPCサーバで処理された複数のリクエストは平行して実行することができます。逐次処理が望ましい場合は、wait パラメータが使われるべきです。
stub
含まれたリクエストの結果が空になるか、リクエストの処理中にエラーが起こる場合に、名前の付いたブロックの中身が出力されるような非標準的なパラメータです。例えば:
<!--# block name="one" -->&nbsp;<!--# endblock -->
<!--# include virtual="/remote/body.php?argument=value" stub="one" -->
置き換えブロックの内容は含まれたリクエストの内容の中で処理されます。
wait
SSI処理を続ける前にリクエストが完全に終了するのを待つのを指示する非標準のパラメータです。例えば:
<!--# include virtual="/remote/body.php?argument=value" wait="yes" -->
設定
指定された変数のリクエスト処理の結果を書き込むように指示する非標準のパラメータです。例えば:
<!--# include virtual="/remote/body.php?argument=value" set="one" -->
応答の最大サイズはsubrequest_output_buffer_size ディレクティブ (1.13.10) によって設定されます:
location /remote/ {
    subrequest_output_buffer_size 64k;
    ...
}
バージョン 1.13.10より前は、ngx_http_proxy_module, ngx_http_memcached_module, ngx_http_fastcgi_module (1.5.6), ngx_http_uwsgi_module (1.5.6) と ngx_http_scgi_module (1.5.6) モジュールを使って取得された応答の結果だけが変数に書き込むことができました。応答の最大サイズはproxy_buffer_size, memcached_buffer_size, fastcgi_buffer_size, uwsgi_buffer_sizescgi_buffer_size ディレクティブを使って設定することができました。
設定
変数の値を設定します。このコマンドは次のパラメータを持ちます:
var
変数名
変数の値変数を含む値が割り当てられた場合、それらの値は置き換えられます。

埋め込み変数

ngx_http_ssi_moduleモジュールは二つの埋め込み変数をサポートします:

$date_local
ローカルタイムゾーンの現在の時間書式はtimefmtパラメータを使ってconfigコマンドで設定されます。
$date_gmt
GMTでの現在の時間書式はtimefmtパラメータを使ってconfigコマンドで設定されます。

TOP
inserted by FC2 system