NGINX Lua モジュールをインストールする
- English
- 日本語
NGINX Lua モジュールは、NGINX 用の OpenResty の Lua モジュール (通常は ngx_http_lua_module と呼ばれる) を活用しており、 NGINX 設定に Lua コードを直接埋め込むことができます。このモジュールは Lua スクリプト言語で書かれており、NGINX オープンソース、NGINX Plus、および OpenResty と統合できます。
ヒント : Lua のサポートがホスティング環境の要件に含まれていない場合は、NGINX Lua モジュールの代わりに NGINX 動的モジュールをインストールすることをお勧めします。NGINX 動的モジュールは依存関係が少なくなっています。
前提条件
NGINX Lua モジュールをインストールする前に、NGINX インストールを Lua サポートでコンパイルするか、OpenResty Lua モジュール経由でロードしなければなりません。Lua の追加方法を決める際には、次の点に注意してください。
Lua モジュールの可用性はディストリビューションとベンダーによって異なるため、OpenResty を使用するか、適切な Lua の依存関係とモジュールを提供するディストリビューションとサードパーティのリポジトリを使用することをお勧めします。
2019年5月時点で、OpenResty の Lua モジュールには
resty.coreが必要です。この変更に伴い、特定の NGINX パッケージメンテナーは NGINX 用の Lua パッケージ (例 : Ubuntu 22.04以降) の提供を停止し、特定のパッケージには Lua が含まれなくなる可能性があります (例 :nginx-fullまたはnginx-extras)。2019年9月以降、Lua モジュール (
nginx-module-lua) の新バージョンのリリースは停止されました。このモジュールに依存する既存のインストールは、モジュールのサポート期間が終了するまでサポートされます。
Lua を追加したら、正しくロードされていることを確認します。
パッケージリポジトリを追加する
前提条件を完了したら、リポジトリからプルするようにパッケージ管理システムを設定します。
Alpine Linux
使用したい Alpine Linux パッケージリポジトリのバージョンを追加します。
- Alpine Linux 3.23
$ echo '[sigsci_release]name=sigsci_releasebaseurl=https://apk.security.fastly.com/release/amazon/2023/noarchgpgcheck=1repo_gpgcheck=1enabled=1gpgkey=https://yum.security.fastly.com/release/gpgkey https://dl.security.fastly.com/sigsci-agent/gpg.keysslverify=1sslcacert=/etc/pki/tls/certs/ca-bundle.crt' | sudo tee /etc/yum.repos.d/sigsci.repoAmazon Linux
使用したい Amazon Linux パッケージリポジトリのバージョンを追加します。
注 : これらの指示に従うと、パッケージマネージャーが
https://yum.security.fastly.comからプルするように設定できます。同じパッケージリポジトリはhttps://yum.signalsciences.netにもあります。パッケージマネージャーをhttps://yum.signalsciences.netからプルするように設定するには、関連するコードサンプル内のsecurity.fastly.comのすべてのインスタンスをsignalsciences.netに置き換えてください。
- Amazon Linux 2023
- Amazon Linux 2
$ echo '[sigsci_release]name=sigsci_releasebaseurl=https://yum.security.fastly.com/release/amazon/2023/noarchgpgcheck=1repo_gpgcheck=1enabled=1gpgkey=https://yum.security.fastly.com/release/gpgkey https://dl.security.fastly.com/sigsci-agent/gpg.keysslverify=1sslcacert=/etc/pki/tls/certs/ca-bundle.crt' | sudo tee /etc/yum.repos.d/sigsci.repoDebian
使用したい Debian パッケージリポジトリのバージョンを追加します。
注 : これらの指示に従うと、パッケージマネージャーが
https://apt.security.fastly.comからプルするように設定できます。同じパッケージリポジトリはhttps://apt.signalsciences.netにあります。パッケージマネージャーをhttps://apt.signalsciences.netからプルするように設定するには、関連するコードサンプル内のsecurity.fastly.comのすべてのインスタンスをsignalsciences.netに置き換えてください。
- Bullseye (11) 以上
- Buster (10) 以下
$ sudo apt-get update$ sudo apt-get install -y apt-transport-https wget gnupg lsb-release$ sudo wget -qO - https://apt.security.fastly.com/release/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/sigsci.gpg$ sudo echo "deb [signed-by=/usr/share/keyrings/sigsci.gpg] https://apt.security.fastly.com/release/debian/ `lsb_release -cs` main" | sudo tee /etc/apt/sources.list.d/sigsci-release.list$ sudo apt-get updateRHEL と派生製品
次のコマンドは、Red Hat Enterprise Linux (RHEL) とその派生製品 (例 : CentOS) に適用されます。タブ名は RHEL のベースソースバージョンを示しています。
注 : これらの指示に従うと、パッケージマネージャーが
https://yum.security.fastly.comからプルするように設定できます。同じパッケージリポジトリはhttps://yum.signalsciences.netにもあります。パッケージマネージャーをhttps://yum.signalsciences.netからプルするように設定するには、関連するコードサンプル内のsecurity.fastly.comのすべてのインスタンスをsignalsciences.netに置き換えてください。
- RHEL 10
- RHEL 9
- RHEL 8
- RHEL 7
$ sudo tee /etc/yum.repos.d/sigsci.repo <<-'EOF'[sigsci_release]name=sigsci_releasebaseurl=https://yum.security.fastly.com/release/el/$releasever/noarchrepo_gpgcheck=1gpgcheck=1enabled=1gpgkey=https://yum.security.fastly.com/release/gpgkey https://dl.security.fastly.com/sigsci-agent/gpg.keysslverify=1sslcacert=/etc/pki/tls/certs/ca-bundle.crtEOFUbuntu
使用したい Ubuntu パッケージリポジトリのバージョンを追加します。
注 : これらの指示に従うと、パッケージマネージャーが
https://apt.security.fastly.comからプルするように設定できます。同じパッケージリポジトリはhttps://apt.signalsciences.netにあります。パッケージマネージャーをhttps://apt.signalsciences.netからプルするように設定するには、関連するコードサンプル内のsecurity.fastly.comのすべてのインスタンスをsignalsciences.netに置き換えてください。
- リリース 22.04+
- リリース 20.04 以前
$ sudo apt-get update$ sudo apt-get install -y apt-transport-https wget gnupg lsb-release$ wget -qO - https://apt.security.fastly.com/release/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/sigsci.gpg$ sudo echo "deb [signed-by=/usr/share/keyrings/sigsci.gpg] https://apt.security.fastly.com/release/ubuntu/ `lsb_release -cs` main" | sudo tee /etc/apt/sources.list.d/sigsci-release.list$ sudo apt-get updateNGINX Lua モジュールをインストールする
パッケージ管理システムをリポジトリからプルするように設定したら、NGINX Lua モジュールを次の手順でインストールします。
ディストリビューションに適したモジュールパッケージをインストールします。
- Debian / Ubuntu
- RHEL / CentOS / Amazon
$ sudo apt install sigsci-module-nginxNGINX の設定ファイル (デフォルトでは
/etc/nginx/nginx.confにある) の関連する NGINXserverコンテキストに次の行を追加します。include "/opt/sigsci/nginx/sigsci.conf";NGINX サービスを再起動して、新しいモジュールを初期化します。
systemdベースのシステム :$ sudo systemctl restart nginxupstartベースのシステム :$ sudo restart nginxinitシステムまたはサービスファイルなし :$ sudo nginx -s reload
Lua が正しくロードされているか確認する
NGINX Lua モジュールをインストールした後、Lua が動作していること、および NGINX Lua モジュールが正しく実行されていることを確認します。
次のスクリプトを実行して、次のファイルをインストールディレクトリに追加します。
cat <<'EOF' >/opt/sigsci/nginx/sigsci_check_lua.conf# If you installed Lua as a dynamic module, uncomment the following load_module directives. This is not required if using openresty.# load_module modules/ndk_http_module.so;# load_module modules/ngx_http_lua_module.so;events {worker_connections 768;# multi_accept on;}http {init_by_lua 'local m = {}local ngx_lua_version = "dev"if ngx then-- if not in testing environmentngx_lua_version = tostring(ngx.config.ngx_lua_version)ngx.log(ngx.STDERR, "INFO:", " Check for jit: lua version: ", ngx_lua_version)endlocal r, jit = pcall(require, "jit")if not r thenerror("ERROR: No lua jit support: No support for NGWAF Lua module")elseif jit thenm._SERVER_FLAVOR = ngx_lua_version .. ", lua=" .. jit.versionif os.getenv("SIGSCI_NGINX_DISABLE_JIT") == "true" thennginx.log(ngx.STDERR, "WARNING:", "Disabling lua jit because env var: SIGSCI_NGINX_DISABLE_JIT=", "true")endngx.log(ngx.STDERR, "INFO:", " Bravo! You have lua jit support=", m._SERVER_FLAVOR)elseerror("ERROR: No luajit support: No support for NGWAF module")endend';}EOF次のコマンドを実行して、Lua が正しくロードされているかテストします。
$ nginx -t -c /opt/sigsci/nginx/sigsci_check_lua.conf出力は次のようになります。
nginx: [] [lua] init_by_lua:9: INFO: Check for jit: lua version: 10000nginx: [] [lua] init_by_lua:22: INFO: Bravo! You have lua jit support=10000, lua=LuaJIT 2.0.4nginx: the configuration file <your explicit path>/sigsci_check_lua.conf syntax is oknginx: configuration file <your explicit path>/sigsci_check_lua.conf test is successful
NGINX で複数の Lua スクリプトを使用する
NGINX は、NGINX Lua モジュールで使用される1つの init_by_lua または init_by_lua_file をサポートしています。NGINX 内に独自の Lua スクリプトが埋め込まれている場合は、NGINX Lua モジュールをカスタム Lua コードに組み込む必要があります。
ヒント :
sigsci.conf設定ファイルを使用しない場合、NGINX Lua モジュールがアップグレードされるときに設定ファイルが更新されないため、Lua モジュールを確認する必要があります。
既存の Lua コードに NGINX Lua モジュールを追加するには、以下の手順に従います。
NGINX 設定から
sigsciのリファレンスをすべて削除します。リファレンスは次のようなものです。include /opt/sigsci/nginx/sigsci.conf;NGINX の設定に以下の行を追加します。
lua_shared_dict sigsci_conf 12k;lua_use_default_type off;init_by_luaまたはinit_by_lua_fileで指定されたファイルに、次のスニペットを含めます。package.path = "/opt/sigsci/nginx/?.lua;" .. package.pathsigsci = require("SignalSciences")NGINXの設定に
access_by_luaとlog_by_luaを追加します。これらのディレクティブがすでに定義されている場合は、sigsci.prerequest()およびsigsci.postrequest()ステートメントをそれぞれの Lua の呼び出し元にコピーします。access_by_lua 'sigsci.prerequest()';log_by_lua 'sigsci.postrequest()';NGINXを再起動してください。