ngx_http_js_module モジュール

知られていること
設定例
ディレクティブ
     js_include
     js_content
     js_set
リクエストおよび応答の引数

ngx_http_js_module モジュールはnginScript - JavaScript言語のサブセット、での場所と変数のハンドラを実装するために使われます。

このモジュールはデフォルトではビルドされず、--add_module configuration パラメータを使ってnginScriptと一緒にコンパイルする必要があります:

./configure --add-module=path-to-njs/nginx

nginScriptモジュールと一緒にrepositoryは以下のコマンド(Mercurial クライアントが必要です)を使ってクローンすることができます:

hg clone http://hg.nginx.org/njs

このモジュールは動的なものとしてビルドすることもできます:

./configure --add-dynamic_module=path-to-njs/nginx

知られていること

このモジュールは実験的なもので、利用者責任です。

設定例

js_include http.js;

js_set $foo     foo;
js_set $summary summary;

server {
    listen 8000;

    location / {
        add_header X-Foo $foo;
        js_content baz;
    }

    location /summary {
        return 200 $summary;
    }
}

The http.js file:

function foo(req, res) {
    req.log("hello from foo() handler");
    return "foo";
}

function summary(req, res) {
    var a, s, h;

    s = "JS summary\n\n";

    s += "Method: " + req.method + "\n";
    s += "HTTP version: " + req.httpVersion + "\n";
    s += "Host: " + req.headers.host + "\n";
    s += "Remote Address: " + req.remoteAddress + "\n";
    s += "URI: " + req.uri + "\n";

    s += "Headers:\n";
    for (h in req.headers) {
        s += "  header '" + h + "' is '" + req.headers[h] + "'\n";
    }

    s += "Args:\n";
    for (a in req.args) {
        s += "  arg '" + a + "' is '" + req.args[a] + "'\n";
    }

    return s;
}

function baz(req, res) {
    res.headers.foo = 1234;
    res.status = 200;
    res.contentType = "text/plain; charset=utf-8";
    res.contentLength = 15;
    res.sendHeader();
    res.send("nginx");
    res.send("java");
    res.send("script");

    res.finish();
}

ディレクティブ

構文: js_include file;
デフォルト: -
コンテキスト: http

nginScript内の場所と変数のハンドラを実装するファイルを指定します。

構文: js_content function;
デフォルト: -
コンテキスト: location, limit_except

場所のコンテントハンドラとしてnginScript関数を設定します。

構文: js_set $variable function;
デフォルト: -
コンテキスト: http

特定の変数のためにnginScript関数を設定します。

リクエストおよび応答の引数

各HTTP nginScript ハンドラは二つの引数、リクエストと応答、を受け取ります。

リクエストオブジェクトは以下のプロパティを持ちます:

uri
リクエスト内の現在のURI、読み込みのみ
method
リクエストメソッド、読み込みのみ
httpVersion
HTTP バージョン、読み込みのみ
remoteAddress
クライアントアドレス、読み込みのみ
headers{}
リクエストヘッダ オブジェクト、読み込みのみ。

例えば、Header-Name ヘッダは構文headers['Header-Name'] あるいは headers.Header_nameを使ってアクセスすることができます

args{}
リクエスト 引数オブジェクト、読み込みのみ
variables{}
nginx 変数オブジェクト、読み込みのみ
log(string)
エラーログに文字列を書き込みます

応答オブジェクトは以下のプロパティを持ちます:

状態
応答ステータス、書き込み可
headers{}
応答ヘッダオブジェクト
contentType
応答 “Content-Type” ヘッダフィールド値、書き込み可
contentLength
応答 “Content-Length” ヘッダフィールド値、書き込み可

応答オブジェクトは以下のメソッドを持ちます:

sendHeader()
HTTPヘッダをクライアントに送信します
send(string)
クライアントに応答ボディの一部を送信します
finish()
クライアントへの応答の送信を完了します

TOP
inserted by FC2 system