NGINX 動的モジュールをインストールする
- English
- 日本語
NGINX 動的モジュールはコンパイルされ、その後、NGINX バイナリ全体を再コンパイルすることなく、ランタイム時に NGINX に動的にロードされます。このモジュールは C 言語で書かれており、 NGINX オープンソースおよび NGINX Plus と統合できます。
重要 : NGINX 動的モジュールを使用するには、NGINX が
--with-compatフラグでコンパイルされている必要があります。NGINX がそのフラグ付きでコンパイルされていない場合は、NGINX Lua モジュールを使用する必要があります。
モジュールをインストールするには、次の手順を実行します。
パッケージリポジトリを追加する
NGINX の動的モジュールをインストールする前に、リポジトリからプルできるようにパッケージ管理システムを設定する必要があります。
Alpine Linux
使用したい Alpine Linux パッケージリポジトリのバージョンを追加します。
注 : これらの指示に従うと、パッケージマネージャーが
https://apk.security.fastly.comからプルするように設定できます。同じパッケージリポジトリはhttps://apk.signalsciences.netにもあります。パッケージマネージャーをhttps://apk.signalsciences.netからプルするように設定するには、関連するコードサンプル内のsecurity.fastly.comのすべてのインスタンスをsignalsciences.netに置き換えてください。
$ apk update && apk add wget$ wget -q https://apk.security.fastly.com/sigsci_apk.pub ; mv sigsci_apk.pub /etc/apk/keys$ echo https://apk.security.fastly.com/$(grep -oE '[0-9]+\.[0-9]{2}' /etc/alpine-release)/main | tee -a /etc/apk/repositories && apk updateAmazon 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/$basearchgpgcheck=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.signalsciences.net/release/el/10/$basearchrepo_gpgcheck=1gpgcheck=1enabled=1gpgkey=https://yum.signalsciences.net/release/gpgkey https://dl.signalsciences.net/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$ 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/ubuntu/ `lsb_release -cs` main" | sudo tee /etc/apt/sources.list.d/sigsci-release.list$ sudo apt-get updateNGINX 動的モジュールをインストールする
パッケージリポジトリを追加した後、NGINX オープンソースまたは NGINX Plus 用の NGINX モジュールをインストールできます。
制約と考慮事項
NGINX 動的モジュールをインストールする際は、次の点に注意してください。
NGINX 動的モジュールをインストールする前に、ディストリビューションに Fastly のパッケージリポジトリを追加し、リポジトリのメタデータを更新する必要があります。
インストールする NGINX 動的モジュールのバージョンは、NGINX インストールのコアバージョンと一致する必要があります。例えば、NGINX
1.18.0をインストールしている場合、モジュールのバージョン1.18.0をインストールしなければなりません。NGINX モジュールパッケージのファイル名には、コンパイル対象となる NGINX バージョンが含まれ、場合によってはビルドプリフィックスやディストリビューションリリース (例:
1.25.3-715~jammy) も含まれます。同じ NGINX バージョンにビルド番号が存在する場合は、ビルド番号が最も大きいパッケージをインストールすることをお勧めします。インストールコマンドにワイルドカード (
*) を追加すると、指定された NGINX バージョンで利用可能な最新バージョンを確実にインストールできます。新しいバージョンのためにリポジトリのメタデータ (例 :apt update) を更新する必要があるかもしれません。モジュールバージョン (NGINX バージョンとは異なる) は、パッケージのメタデータで利用可能です。モジュールバージョンのクエリの詳細については、「モジュールのバージョンを特定する」をご覧ください。
NGINX オープンソース用 NGINX 動的モジュールをインストールする
Fastly の NGINX オープンソース用 NGINX 動的モジュールは、NGINX オープンソース用にコンパイルされています。このモジュールをインストールする手順は次のとおりです。
NGINX のバイナリバージョンを見つけます。
$ nginx -v注 : 何も返されないか
nginx: not foundエラーが表示された場合は、NGINX が正しくインストールされ、該当するシェルパスで利用可能であることを確認してください。NGINX パッケージとしてインストールされていない場合 (tarball から抽出された場合など)、 NGINX パッケージの依存関係が満たされていないために、パッケージをインストールする後続のコマンドが失敗する可能性があります。お使いの NGINX のバージョンに適したモジュールを特定します。NGINX の安定版、メインライン、ディストリビューション提供版のどのリリースを使用しているかに応じて選択してください。
nginx-module-fastly-nxs:nginx.orgが提供する NGINX の安定版 (偶数) リリースには、このパッケージを使用します。nginx-module-fastly-nxm:nginx.orgが提供する NGINX のメインライン (奇数) リリースには、このパッケージを使用します。nginx-module-fastly-nxd: Linux ディストリビューションが提供する NGINX リリースにはこのパッケージを使用します。システムに NGINX がインストールされているものの、nginx.orgからインストールしていない場合、ディストリビューション提供版のリリースを使用しています。nginx-module-sigsci-nxo: 既存の NGINX インストールでこのパッケージがすでに使用されている場合にのみ、このパッケージを使用します。新規インストールでは、他の3つのパッケージのうち最も適切なものを使用してください。
ディストリビューションのパッケージマネージャーを使用して、特定のNGINX オープンソースリリース用の NGINX 動的モジュールパッケージをインストールします。インストールするバージョンは、NGINX インストールのコアバージョンと一致する必要があります。
<nginx-dynamic-module-variation>を、使用している特定のパッケージタイプに置き換えます。- Debian / Ubuntu
- RHEL / CentOS
- Alpine Linux
- Amazon Linux
最新バージョンのモジュールをインストールするには、次のコマンドを実行してください。
$ sudo apt-get install <nginx-dynamic-module-variation>特定のバージョンのモジュールをインストールするには、次のコマンドを実行し、
<nginx-core-version>をインストール済みの NGINX コアバージョンに置き換えてください。$ sudo apt-get install <nginx-dynamic-module-variation>=<nginx-core-version>\*たとえば、インストールされている NGINX コアバージョンが
1.26.0である場合、コマンドは次のようになります。$ sudo apt-get install nginx-module-fastly-nxs=1.26.0\*
NGINX Plus 用 NGINX 動的モジュールをインストールする
NGINX Plus 用 NGINX 動的モジュールは、F5 が管理する NGINX Plus Web サーバー用にコンパイルされています。このモジュールをインストールする手順は次のとおりです。
NGINX Plus のバージョンを見つけます。
nginx -v例えば、以下のレスポンスでは NGINX Plus のバージョンは
R30です。nginx version: nginx/1.25.1 (nginx-plus-r30-p1)注 : 何も返されないか
nginx: not foundエラーが表示された場合は、NGINX が正しくインストールされ、該当するシェルパスで利用可能であることを確認してください。NGINX パッケージとしてインストールされていない場合 (tarball から抽出された場合など)、 NGINX パッケージの依存関係が満たされていないために、パッケージをインストールする後続のコマンドが失敗する可能性があります。ディストリビューションのパッケージマネージャーを使用して、特定の NGINX Plus リリース用の NGINX 動的モジュール (
nginx-module-fastly-nxp) パッケージをインストールします。インストールするバージョンは、お使いの NGINX Plus のインストールバージョンと一致する必要があります。- Ubuntu / Debian
- RHEL / CentOS
- Alpine Linux
- Amazon Linux 2 または 1
お使いの NGINX コアバージョンと互換性のある最新バージョンのモジュールをインストールするには、次のコマンドを実行してください。
$ sudo apt-get install nginx-module-fastly-nxp特定のバージョンのモジュールをインストールするには、次のコマンドを実行し、
<nginx-core-version>をインストール済みの NGINX コアバージョンに置き換えてください。$ sudo apt-get install nginx-module-fastly-nxp=<nginx-plus-version>\*たとえば、インストールされている NGINX Plus のバージョンが
R30の場合、コマンドは次のようになります。$ sudo apt-get install nginx-module-fastly-nxp=30\*
NGINX 動的モジュールをロードする
NGINX 動的モジュールをインストールした後、実行時にモジュールが NGINX にロードされるように、NGINX の設定で NGINX 動的モジュールとして宣言する必要があります。
NGINX 設定ファイル (多くの場合、デフォルトで
/etc/nginx/nginx.confにある) で、NGINXload_moduleディレクティブを使用して、NGINX 動的モジュールを NGINX のmainコンテキスト (例:pidディレクティブの下) にロードします。load_module /etc/nginx/modules/ngx_http_fastly_module.so;次のコマンドを実行して、変更が有効であることを確認します。
$ nginx -t出力は次のようになります。
nginx: the configuration file /etc/nginx/nginx.conf syntax is oknginx: configuration file /etc/nginx/nginx.conf test is successfulNGINX を再起動します。
$ service nginx restartinit システム (例: Alpine コンテナ) を実行していないサーバーの場合、次のコマンドで設定をリロードします。
$ nginx -s reload(任意) モジュールが正常にロードされたことを確認してください。
$ cat /var/log/nginx/error.log | grep 'sigsci:'モジュールがロードされると、
error.logは次のように表示されます。1970/01/01 00:00:00 [notice] 4242#4242: sigsci_init_main_conf: Using default UDS socket: /var/run/sigsci.sock1970/01/01 00:00:00 [notice] 4242#4242: sigsci:init: setting phase REWRITE: ngx-phase=31970/01/01 00:00:00 [notice] 4242#4242: sigsci:sigsci_create_random: initialized random checking1970/01/01 00:00:00 [notice] 4242#4242: signal process started
インストールのスクリプト作成
一連のシェルコマンドを使用して、NGINX 動的モジュールをインストールすることもできます。一連のコマンドはそれぞれ、前のコマンドの出力を変数として取得します。この方法は、Dockerfile RUN ディレクティブのような、スクリプトを使用したインストールの際に有用です。ここでの例は、安定版の NGINX を既にインストールしていることを前提としています。選択したバージョンに合わせて調整してください。
- Debian / Ubuntu
- RHEL / CentOS / Amazon
- Alpine Linux
$ module_version=$(apt-cache madison nginx-module-fastly-nxs | grep $(nginx -v 2>&1 | grep -oP 'nginx/\K[0-9.]+') | awk -F'|' '{print $2}' | head -n 1 | xargs)$ apt-get install -y nginx-module-fastly-nxs=$module_version$ unset module_versionNGINX 動的モジュールを設定する
NGINX の動的モジュールは、次の追加設定をサポートしています。
| Name | 説明 | 値 | セクション |
sigsci_enabled | モジュールの有効化または無効化 | on (デフォルト)、off | http、サーバー、または場所ごと |
sigsci_debug | sigsci_debug のみを有効化、他のモジュールに影響なし | on、off (デフォルト) | HTTP |
sigsci_handler_phase | モジュールがリクエストを処理するフェーズ | preaccess、access、precontent、rewrite (デフォルト) | HTTP |
sigsci_agent_max_post_len | エージェントに送信する POST ボディの最大サイズ (バイト) | 0 => 投稿本文を送信しない。それ以外の場合はバイト数を 0 より大きい値で指定 (デフォルトは100000) | HTTP |
sigsci_agent_timeout | エージェント通信ソケットのタイムアウト時間 (ミリ秒) | ミリ秒 > 0 (デフォルトは 100) | HTTP |
sigsci_anomaly_resp_size | 最大レスポンスサイズ (バイト)。この値を超える場合は異常とみなされます。 | バイト数 > 0 (デフォルトは 524288) | HTTP |
sigsci_anomaly_resp_time | 最大レスポンス時間 (ミリ秒)。この値を超える場合は異常とみなされます。 | ミリ秒 > 0 (デフォルトは 1000) | HTTP |
sigsci_agent_host | SignalSciences エージェントがリッスンする Unix ドメインソケットの IP アドレスまたはパス | 例 : tcp:localhost (デフォルトは unix:/var/run/sigsci.sock) | HTTP |
sigsci_agent_port | エージェントがリッスンする TCP ポート。注 : IP またはホスト名に sigsci_agent_host が設定されている場合にのみ使用してください。 | 有効な TCP ポート番号 | HTTP |
sigsci_websocket_enabled | WebSocket 検査の有効化または無効化 | on、off (デフォルト) | http、サーバー、または場所ごと |
注 :
sigsci_websocket_enabledは、デフォルトではoffです。有効化するには、httpセクションで指定する必要があります。これはその後、必要に応じて、serverとlocationのセクションで、offとonに転換することができます。
設定例
http セクションで SignalSciences モジュールパラメータを設定する例は、次のとおりです。
# sigsci module settings##sigsci_debug on;sigsci_agent_timeout 200;次の例は、sigsci_enabledパラメータで location セクションを使用する方法を示しています。
# sigsci_enabled set to "on"location /inspect/ { sigsci_enabled on; proxy_pass http://127.0.0.1:80/inspect/;}# sigsci_enabled set to "off"location /noinspect/ { sigsci_enabled off; proxy_pass http://127.0.0.1:80/noinspect/;}sigsci_websocket_enabled パラメータで server および location セクションを使用する詳細な例は、次のとおりです。
http {
# must be turned on in global section sigsci_websocket_enabled on;
server { ... # turned off for this server section sigsci_websocket_enabled off;
# websocket turned on for this location location /websenabled { sigsci_websocket_enabled on; proxy_pass http://websocket; ... }
# websocket off for this location since it is off in server location /websdisabled { proxy_pass http://websocket; ... }