モジュール 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を使用して送信することが理にかなう、ディスクに保存されたレスポンスの部分の最小sizeを設定します。
| 構文 |
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 ... -->
次のコマンドがサポートされています
blockincludeコマンドのスタブとして使用できるブロックを定義します。ブロックには他のSSIコマンドを含めることができます。このコマンドには次のパラメーターがありますname- ブロック名。
<!--# 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が使用されます。 default- 変数が未定義の場合に出力される文字列を設定する非標準パラメーター。デフォルトでは「
(none)」が出力されます。このコマンドは
次のコマンドシーケンスを置き換えます<!--# echo var="name" default="no" -->
<!--# if expr="$name" --><!--# echo var="name" --><!--# else -->no<!--# endif -->
if- 条件付きインクルージョンを実行します。次のコマンドがサポートされています
現在、ネストレベルは1レベルのみサポートされています。このコマンドには次のパラメーターがあります<!--# 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- 別のリクエストの結果をレスポンスに含めます。このコマンドには次のパラメーターがあります
file- インクルードするファイルを指定します。たとえば
<!--# include file="footer.html" -->
virtual- インクルードするリクエストを指定します。たとえば
1ページに指定された複数のリクエストは、プロキシされたサーバーまたは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" -->
set- リクエスト処理の成功した結果を指定された変数に書き込むよう指示する非標準パラメーター。たとえば
レスポンスの最大サイズは、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; ... }
set- 変数の値を設定します。このコマンドには次のパラメーターがあります
var- 変数名。
value- 変数値。割り当てられた値に変数が含まれる場合、その値が代入されます。
埋め込み変数
ngx_http_ssi_moduleモジュールは、2つの埋め込み変数をサポートしています
$date_local- ローカルタイムゾーンの現在時刻。形式は、
configコマンドのtimefmtパラメーターで設定されます。 $date_gmt- GMTの現在時刻。形式は、
configコマンドのtimefmtパラメーターで設定されます。