nginScriptを試してみた

nginx上で動作するJavaScript仮想マシンである、nginScript なるものがリリースされた。
(まだプレビュー版とのことだが)

これはリクエスト処理の実行時に評価され、特定のリクエストに対してnginxの内部処理をを調整することが可能になる。っぽい。

Luangx_mrubyと同じような感じで使えるのようだ。

nginScriptのwikiを参考にDocker + docker-machineで簡単に試してみた。

install and build nginx

nginx: downloadから最新のバージョンを取得する。
またnginScriptはオプションとして提供されているので、nginxのMercurialから取得する必要がある。

これを適当な感じでbuild

nginScript

ちなみにnginx.confは以下のようになっている

js_run

nginScriptはlocationごとに評価され、実行される。
locationディレクティブでnginScriptを利用する際はjs_run で実行する必要がある。

js_set

また、JavaScriptを使い内部変数を定義することもできる。
その際はhttpディレクティブに設定を書く必要がある。

$r(リクエストオブジェクト)

その他、リクエストの内部変数として $rがJavaScriptオブジェクトとして利用できる。
$rはsendHeader(),send(),finish() というメソッドが現在のところ定義されており、これらを利用してレスポンスを返すことができる。

リクエストパラメータ

$r.args にJavaScriptのオブジェクトとして格納されている。

nginScriptはECMA標準準拠というわけではないようだが、基本的なことはできそう。
適当な関数を定義して評価することや、カスタムヘッダーを追加することなどはできた。

ということで、ほとんどReadme をそのまま試したことになるけど、
いまのところlocationディレクティブにhookして、リクエスト、レスポンスをJavaScriptで操作できる位という感じだった。

参考にしたページ
nginx Wiki documentation
README

Comments