設定変数API

構造

ngx_http_variable_value_t

変数値の詳細を含む構造。

unsigned len:28

data パラメータ(28ビット数)の長さ

unsigned valid:1

キャッシュされた値が有効化どうかを決定する真偽値

unsigned no_cacheable:1

値がキャッシュ可能かどうかを決定する真偽値

unsigned not_found:1

要求された変数が見つかったかどうかを表す真偽値

unsigned char *data

変数の値

ngx_http_variable_t

設定変数に関する詳細を保持する構造

ngx_int_t (*ngx_http_get_variable_pt)(ngx_http_request_t *r, ngx_http_variable_value_t *v, uintptr_t data)

変数値を取り出す時に実行するコールバック

void (*ngx_http_set_variable_pt)(ngx_http_request_t *r, ngx_http_variable_value_t *v, uintptr_t data)

変数の値を設定する時に実行するコールバック

uintptr_t data

get/set コールバック関数と一緒に使うためのデータへのポインタ

機能

ngx_http_add_variable

ngx_http_variable_t *ngx_http_add_variable(ngx_conf_t *cf, ngx_str_t *name, ngx_uint_t flags)

変数を設定に追加するこれはngx_http_module_tの事前定義ホックから呼ばれなければなりません

フラグ 解説
NGX_HTTP_VAR_CHANGEABLE 設定ファイル内の変数設定を有効にする
NGX_HTTP_VAR_NOCACHEABLE 変数はキャッシュされてはなりません
NGX_HTTP_VAR_NOHASH An optimistaition which removes the ability to use ngx_http_get_variable() on a variable
パラメータ:
  • cf – 変数を追加する先の設定オブジェクト
  • name – 変数の名前
  • flags – 変数のためのフラグ
返り値:

新しく生成された変数へのポインタ

ngx_http_get_variable_index

ngx_int_t ngx_http_get_variable_index(ngx_conf_t *cf, ngx_str_t *name)

名前に基づいた変数のインデックスを取得する

パラメータ:
  • cf – 検索する設定オブジェクト
  • name – 検索する設定名
返り値:

変数のインデックスID、あるいはエラー時にはNGX_ERROR

ngx_http_get_indexed_variable

ngx_http_variable_value_t *ngx_http_get_indexed_variable(ngx_http_request_t *r, ngx_uint_t index)

変数のための現在の値を取得する

パラメータ:
  • r – 変数を必要とするリクエストオブジェクト
  • index – 変数のためのインデックス
返り値:

変数を含む構造へのポインタ

ngx_http_get_flushed_variable

ngx_http_variable_value_t *ngx_http_get_flushed_variable(ngx_http_request_t *r, ngx_uint_t index)

変数のキャッシュをフラッシュし、それの新しい値を取得する

パラメータ:
  • r – 変数を必要とするリクエストオブジェクト
  • index – 変数のためのインデックス
返り値:

変数を含む構造へのポインタ

ngx_http_get_variable

ngx_http_variable_value_t *ngx_http_get_variable(ngx_http_request_t *r, ngx_str_t *name, ngx_uint_t key)

変数名のハッシュの調査に基づいて変数を取得する。NGX_HTTP_VAR_NOHASHフラグを有効にして初期化された変数については動作しません。

ハッシュは ngx_hash_strlow()を使って生成することができます。例えば:

key = ngx_hash_strlow(var.data, var.data, var.len);
vv = ngx_http_get_variable(r, &var, key);
パラメータ:
  • r – 変数を必要とするリクエストオブジェクト
  • name – 要求された変数の名前
  • key – 変数名のハッシュ
返り値:

変数を含む構造へのポインタ

TOP
inserted by FC2 system