njsとは #
njs(NGINX JavaScript)は、Nginxの設定ファイル内で JavaScript を利用し、リクエストやレスポンスの処理を記述できるようにする公式の動的モジュールとなります。
njs を利用することで、Nginxの標準的なディレクティブだけでは実現が難しい複雑な条件分岐やデータの加工、アクセス制御などを JavaScript で柔軟に実装することができます。
2026年6月23日に、njsの 1.0.0 がリリースされました。
本記事では、この njs(1.0.0) を AlmaLinux 10環境にインストールする方法を解説いたします。
なお、ご紹介する手順は、Rocky Linux や Oracle Linux、RHELなどのRHEL系ディストリビューションでも、同様の手順で導入することが可能となっております。
njsで何ができるか #
njs を利用することで、Nginxの設定だけでは実現が難しい、次のような処理を実装できます。
- リクエストやレスポンスの内容を動的に変更する
- User-AgentやIPアドレスに応じてアクセスを制御する
- 外部APIと連携して動的に処理を切り替える
- 条件に応じてブラックリストやホワイトリストを動的に更新する
一般的なJavaScriptとの違い #
njs は、ブラウザや Node.js で利用されている V8 や JavaScriptCore、mozjs などの実行環境とは異なり、Nginx上での動作に特化した実行環境となります。
そのため、ブラウザの DOM 操作や、Node.js の fs、http、path などの標準モジュールは利用できません。
一方で、HTTPリクエストやレスポンスの処理など、Nginx上での処理に特化したAPIが提供されています。
njs ではこれまで独自のjsエンジン(njs engine)が利用されていましたが、njs 1.0.0 からは QuickJS の利用が推奨されています。
インストール方法 #
標準リポジトリでは提供されていない #
AlmaLinux をはじめとする多くの RHEL 系ディストリビューションでは、標準リポジトリに含まれる Nginx パッケージに njs モジュールは含まれておりません。
標準リポジトリのみを有効化した環境にてインストールを実行すると、以下のようにエラーが表示されます。
$ dnf install nginx-module-njs
No match for argument: nginx-module-njs
Error: Unable to find a match: nginx-module-njs
また、njs はソースコードからビルドし導入することもできますが、依存パッケージのインストールやビルド環境の準備など、導入までに手間がかかります。
そのため、本記事では Nginx公式リポジトリを追加し、簡単にインストールする方法を紹介します。
nginx公式リポジトリの追加 #
初めに以下のコマンドで nginx の公式リポジトリファイルを作成します。
設定ファイル名は任意の名前で作成可能です。
本記事では分かりやすいように nginx.repo という名前で作成しております。
vi /etc/yum.repos.d/nginx.repo
次に以下の内容を記述します。
[nginx-stable]
name=nginx stable repo
baseurl=https://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[nginx-mainline]
name=nginx mainline repo
baseurl=https://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
なお、リポジトリの設定内容は変更される可能性があるため、必ず Nginx 公式サイトで最新の情報を確認してください。
これらの設定ファイルには、安定版の Stable リポジトリと、最新機能を含む Mainline リポジトリの2つが定義されています。
デフォルトでは Stable が有効、Mainline が無効となっています。
njs の最新版を利用するには以下のコマンドを実行し mainline リポジトリを有効化してください。
dnf config-manager --enable nginx-mainline
dnf config-manager --disable nginx-stable
設定後は、以下のコマンドを実行しリポジトリが正しく有効になっていることを確認してください。
dnf repolist --enabled | fgrep nginx
正常に設定されている場合は、以下のように nginx-mainline が有効なリポジトリとして表示されます。
nginx-mainline nginx mainline repo
以上で、リポジトリの設定は完了となります。
Nginxとnjsモジュールのインストール #
それでは、実際に Nginx と njs モジュールのインストールを進めていきます。
以下のコマンドを実行インストールしてください。
dnf install nginx nginx-module-njs
実行すると、以下のようにインストールパッケージの確認画面が表示されます。
Last metadata expiration check: 0:00:04 ago on Sun 28 Jun 2026 06:14:29 PM JST.
Dependencies resolved.
===================================================================================================================================================================================================================================
Package Architecture Version Repository Size
===================================================================================================================================================================================================================================
Installing:
nginx x86_64 2:1.31.2-1.el10.ngx nginx-mainline 1.1 M
nginx-module-njs x86_64 1:1.31.2+1.0.0-1.el10.ngx nginx-mainline 2.0 M
Transaction Summary
===================================================================================================================================================================================================================================
Install 2 Packages
Total download size: 3.0 M
Installed size: 15 M
Is this ok [y/N]:
内容を確認し問題なければ y を入力してインストールを進めてください。
外部リポジトリを初めて利用する場合は、GPG キーのインポート確認が表示されます。
先ほど同様に y を入力して続行してください。
Importing GPG key 0xB49F6B46:
Userid : "nginx signing key <signing-key-2@nginx.com>"
Fingerprint: 8540 A6F1 8833 A80E 9C16 53A4 2FD2 1310 B49F 6B46
From : https://nginx.org/keys/nginx_signing.key
Is this ok [y/N]: y
Key imported successfully
Importing GPG key 0x7BD9BF62:
Userid : "nginx signing key <signing-key@nginx.com>"
Fingerprint: 573B FD6B 3D8F BC64 1079 A6AB ABF5 BD82 7BD9 BF62
From : https://nginx.org/keys/nginx_signing.key
Is this ok [y/N]: y
Key imported successfully
Importing GPG key 0x8D88A2B3:
Userid : "nginx signing key <signing-key-3@nginx.com>"
Fingerprint: 9E9B E90E ACBC DE69 FE9B 204C BCDC D8A3 8D88 A2B3
From : https://nginx.org/keys/nginx_signing.key
Is this ok [y/N]: y
インストールが完了すると、次のメッセージが表示されます。
Complete!
インストールの確認 #
次に以下のコマンドを実行し njs モジュールが正しくインストールされているか確認してください。
rpm -q nginx-module-njs
インストールが成功している場合は、以下のようにパッケージ名とバージョンが表示されます。
nginx-module-njs-1.31.2+1.0.0-1.el10.ngx.x86_64
njs のモジュールファイルは、デフォルトで /usr/lib64/nginx/modules/ に配置されます。
以下のコマンドを実行し、モジュールが存在することを確認してください。
ls -l /usr/lib64/nginx/modules/
正常にインストールされている場合は、以下のように js_module ファイルが表示されます。
-rwxr-xr-x. 1 root root 2365944 Jun 23 09:00 ngx_http_js_module-debug.so
-rwxr-xr-x. 1 root root 2357528 Jun 23 09:00 ngx_http_js_module.so
-rwxr-xr-x. 1 root root 2312136 Jun 23 09:00 ngx_stream_js_module-debug.so
-rwxr-xr-x. 1 root root 2299568 Jun 23 09:00 ngx_stream_js_module.so
markdown正常にインストールされている場合は、以下のように js_module ファイルが表示されます。
-rwxr-xr-x. 1 root root 2365944 Jun 23 09:00 ngx_http_js_module-debug.so
-rwxr-xr-x. 1 root root 2357528 Jun 23 09:00 ngx_http_js_module.so
-rwxr-xr-x. 1 root root 2312136 Jun 23 09:00 ngx_stream_js_module-debug.so
-rwxr-xr-x. 1 root root 2299568 Jun 23 09:00 ngx_stream_js_module.so
各モジュールの概要は以下の通りとなっております。
| モジュール名 | 説明 |
|---|---|
ngx_http_js_module.so |
HTTPコンテキストでnjsを利用するためのモジュール |
ngx_http_js_module-debug.so |
HTTPコンテキスト向けのデバッグシンボル付きモジュール |
ngx_stream_js_module.so |
TCPやUDPなどStreamコンテキストでnjsを利用するためのモジュール |
ngx_stream_js_module-debug.so |
Streamコンテキスト向けのデバッグシンボル付きモジュール |
njsモジュールをロードする #
njs は標準機能ではなくモジュール化された拡張機能となるためインストールしただけでは、利用することはできません。
njs の機能を利用するには設定ファイルにて、モジュールを読み込む設定を記載する必要があります。
今回は例として /etc/nginx/nginx.conf にて読み込み設定を記述する方法を紹介します。
以下のコマンドを実行しファイルを編集してください。
vi /etc/nginx/nginx.conf
次に以下の内容を最上部に追記してください。
load_module modules/ngx_http_js_module.so;
load_module は、動的モジュールを Nginx へ読み込むためのディレクティブとなります。
設定を保存したら、以下のコマンドで構文に問題がないことを確認してください。
nginx -t
正常に設定されている場合は、以下のように表示されます。
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
構文チェックで問題がなければ、以下のコマンドを実行してサービスを起動してください。
systemctl enable --now nginx
既にサービスが起動中となっている場合は
systemctl restart nginx
以上で、njs モジュールの読み込み設定は完了となります。
まとめ #
本記事では、Nginx 向け JavaScript 実行環境である njs をAlmaLinux 10環境へ導入する手順を解説しました。
njs を利用することで、標準機能だけでは実現が難しい条件分岐や処理、制御などを柔軟に実装できます。
ぜひとも njs を活用し、Nginxの拡張性を広げてみてください。
関連記事 #
インフラ技術部では njs 以外にも、Nginxに関する情報を発信しています。
興味がある方は、こちらもあわせてご覧ください。
AlmaLinuxにNginxをインストールする方法