ngx_http_js_module モジュール
設定例 ディレクティブ js_include js_content js_set Request and Response Arguments |
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 |
---|---|
デフォルト: | - |
コンテキスト: |
http |
nginScript内の場所と変数のハンドラを実装するファイルを指定します。
構文: |
js_content |
---|---|
デフォルト: | - |
コンテキスト: |
location , limit_except |
場所のコンテントハンドラとしてnginScript関数を設定します。
構文: |
js_set
|
---|---|
デフォルト: | - |
コンテキスト: |
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()
- クライアントへの応答の送信を完了します