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 |
---|---|
デフォルト: |
ssi off; |
コンテキスト: |
http , server , location , if in location |
応答の中でのSSIコマンドの処理を有効または無効にします。
構文: |
ssi_last_modified |
---|---|
デフォルト: |
ssi_last_modified off; |
コンテキスト: |
http , server , location |
このディレクティブはバージョン1.5.1から導入されました。
応答のキャッシュを容易にするために、SSI処理時に元の応答の"Last-Modified"ヘッダフィールドを保持することができます。
デフォルトでは、応答のコンテンツは処理時に修正されるため、そのヘッダは削除されます。そして、元の応答とは無関係に変更された動的生成された要素あるいはパーツを含むかもしれません。
構文: |
ssi_min_file_chunk |
---|---|
デフォルト: |
ssi_min_file_chunk 1k; |
コンテキスト: |
http , server , location |
sendfileを使って開始することに意味があるディスクに格納された応答の一部の最小サイズ
を設定します。
構文: |
ssi_silent_errors |
---|---|
デフォルト: |
ssi_silent_errors off; |
コンテキスト: |
http , server , location |
有効にされた場合は、SSI処理中にエラーが起きた時に出力される"[an error occurred while processing the directive]
"文字列を抑制します。
構文: |
ssi_types |
---|---|
デフォルト: |
ssi_types text/html; |
コンテキスト: |
http , server , location |
"text/html
"に加えて指定されたMIMEタイプの応答の中でSSIコマンドの処理を有効にします。特別な値"*
"は全てのMIMEタイプに一致します(0.8.29)。
構文: |
ssi_value_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
,url
とentity
です。デフォルトでは、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
-
含まれたリクエストを指定します。例えば:
一つのページで指定され、プロキシされたあるいはFastCGI/uwsgi/SCGI/gRPCサーバで処理された複数のリクエストは平行して実行することができます。逐次処理が望ましい場合は、<!--# include virtual="/remote/body.php?argument=value" -->
wait
パラメータが使われるべきです。 stub
-
含まれたリクエストの結果が空になるか、リクエストの処理中にエラーが起こる場合に、名前の付いたブロックの中身が出力されるような非標準的なパラメータです。例えば:
置き換えブロックの内容は含まれたリクエストの内容の中で処理されます。<!--# block name="one" --> <!--# endblock --> <!--# include virtual="/remote/body.php?argument=value" stub="one" -->
wait
-
SSI処理を続ける前にリクエストが完全に終了するのを待つのを指示する非標準のパラメータです。例えば:
<!--# include virtual="/remote/body.php?argument=value" wait="yes" -->
設定
-
指定された変数のリクエスト処理の結果を書き込むように指示する非標準のパラメータです。例えば:
応答の最大サイズはsubrequest_output_buffer_size ディレクティブ (1.13.10) によって設定されます:<!--# include virtual="/remote/body.php?argument=value" set="one" -->
バージョン 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_size と scgi_buffer_size ディレクティブを使って設定することができました。location /remote/ { subrequest_output_buffer_size 64k; ... }
設定
-
変数の値を設定します。このコマンドは次のパラメータを持ちます:
var
- 変数名
値
- 変数の値変数を含む値が割り当てられた場合、それらの値は置き換えられます。
埋め込み変数
ngx_http_ssi_module
モジュールは二つの埋め込み変数をサポートします:
$date_local
-
ローカルタイムゾーンの現在の時間書式は
timefmt
パラメータを使ってconfig
コマンドで設定されます。 $date_gmt
-
GMTでの現在の時間書式は
timefmt
パラメータを使ってconfig
コマンドで設定されます。