Clojure
Nginx-Clojure はis a NGINX module for embedding Clojure or Java or Groovy programs, typically those Ring based handlers.
幾つかの主な機能があります:
Ringと互換性があり、当然Ringに基づいたCompojureなどのフレームワークをサポートします。
httpサービスのための簡単なringハンドラーを書くために Clojure / Java / Groovy を使ってください。
proxy passあるいはコンテント リング ハンドラの前に変数を設定あるいはエラーを返すために簡単なNGINX rewriteハンドラを各には Clojure / Java / Groovy を使います。
Non-blocking coroutine based socket which is Compatible with Java Socket API and works well with largely existing java library such as apache http client, mysql jdbc drivers. この機能を使ってjavaのmainスレッドは多数の接続を扱うことができます。
サブcoroutineで多数のソケットを並行して扱います。例えば、同時に二つのリモートサービスを起動することができます。
幾らかの進んだ使い方のためのソケットの非同期コールバックAPI。
NGINXワーカーの起動時に初期化クロージャーコードを実行。
ユーザ定義のhttpリクエストメソッドのサポート。
NGINXの最新の安定バージョン1.6.0との互換性。(NGINX 1.4.x も大丈夫です。古いバージョンはテストされていませんが、動作するかも知れません)。
NGINXの利点の一つに、ワーカープロセスがクラッシュした場合に自動的にマスタープロセスによって再起動されることがあります。
クロージャーあるいはJavaコードから素早く動的コンテントを処理するために、lazyヘッダと、NGINXとJVM間の直接メモリ操作を使います。
クロージャーあるいはJavaコードによって制御される静的なコンテントを素早く処理するために、NGINXのゼロコピーファイル送信機構を使います。
Linux x64, Linux x86 32bit, Win32 および Mac OS X をサポートします。Win64 ユーザはそれを 32bit JRE/JDKで動作することもできます。
ちなみに、とても速いです。ベンチマークは ここで 見つけることができます。
詳細はnginx-clojure.github.io をたずねてください。