フォーム入力

説明

form-input-nginx-module - application/x-www-form-urlencodedでエンコードされたHTTP POST および PUTリクエストボディを読み込み、リクエストボディ内の引数をパースしてNGINX変数に入れます。

このモジュールはngx_devel_kit (NDK)モジュールに依存します。

インストール

  1. nginx.orgからNGINXソースコードを取得します。
  2. GitHub simpl-it/ngx_devel_kit repositoryからngx_devel_kit source コードを取得します。
  3. ソースコードを解凍しこのモジュールを使ってNGINXをビルドします。
$ wget 'http://sysoev.ru/nginx/nginx-0.8.28.tar.gz'
$ tar -xzvf nginx-0.8.28.tar.gz
$ cd nginx-0.8.28/

$ git-clone http://github.com/simpl-it/ngx_devel_kit.git
$ git-clone http://github.com/calio/form-input-nginx-module.git

$ ./configure --add-module=/somepath/form-input-nginx-module --add-module=/somepath/ngx_devel_kit
$ make -j2
$ make install

使い方

set_form_input $variable;
set_form_input $variable argument;

set_form_input_multi $variable;
set_form_input_multi $variable argument;

例:

#nginx.conf

location /foo {
  set_form_input $data;     # "data"フィールドに$dataを読み込みます
  set_form_input $foo foo;  # "foo"フィールドを$fooに読み込みます
}
location /bar {
  set_form_input_multi $data;      # 全ての"data"フィールドを$dataに読み込みます
  set_form_input_multi $foo data;  # 全ての"data"を$fooに読み込みます
  array_join ' ' $data;            # ここで$dataは文字列です
  array_join ' ' $foo;             # ここで$fooは文字列です
}

互換性

NGINXの以下のバージョンがこのモジュールで動作するはずです:

  • 0.8.x <= 0.8.41 (最後にテストされたバージョンは0.8.43です)
  • 0.7.x (最後にテストされたバージョンは0.7.67です)

変更ログ

form-input-module v0.0.2での変更

  • set_form_input_multiのサポート
  • PUT メソッドをサポート

form-input-module v0.0.1での変更

  • set_form_inputのサポート