njsスクリプト言語

njsは、nginx機能の拡張を可能にするJavaScript言語のサブセットです。 njsは、 ECMAScript 5.1 (厳密モード)に準拠して作成され、一部の ECMAScript6以降の拡張機能があります。 コンプライアンスはまだ進化中です。

ユースケース

  • リクエストがアップストリームサーバーに到達する前のnjsでの複雑なアクセス制御とセキュリティチェック
  • 応答ヘッダーの操作
  • 柔軟な非同期コンテンツハンドラーとフィルターの作成

その他のnjsの使用例については、およびブログ投稿を参照してください。

基本HTTPの例

nginxでnjsを使用するには:

  • インストール njs scripting language

  • http.jsなどのnjsスクリプトファイルを作成します。 njsのプロパティとメソッドのリストについては、Referenceを参照してください。

    function hello(r) {
        r.return(200, "Hello world!");
    }
    
    export default {hello};
    
  • nginx.confファイルで、 ngx_http_js_module モジュールを有効にし、http.jsスクリプトファイルでjs_importディレクティブを指定します。

    load_module modules/ngx_http_js_module.so;
    
    events {}
    
    http {
        js_import http.js;
    
        server {
            listen 8000;
    
            location / {
                js_content http.hello;
            }
        }
    }
    

njsの開発とデバッグのためにnginxとは独立して使用できるスタンドアロンのコマンドラインユーティリティもあります。

テスト済みのOSとプラットフォーム

  • FreeBSD / amd64;
  • Linux / x86、amd64、arm64、ppc64el;
  • Solaris 11 / amd64;
  • macOS / x86_64;

nginx.conf2018でのプレゼンテーション