Nginx の構築と構成 (UNIX®/Linux/macOS)
ここでは、UNIX®、Linux、または macOS 上の InterSystems Web ゲートウェイで使用するための、Nginx Web サーバの構築および構成方法について説明します。(これらのオペレーティング・システムでは、もう 1 つの選択肢として Apache がありますが、この場合のオプションは Windows とは異なります。)
Nginx はオープン・ソース製品で、ソース・コードは http://nginx.org/Opens in a new tab から無料でダウンロードできます。
Linux 用の一部のビルド済みキットを入手できますが、通常、これは最新の Nginx ビルドよりもいくつか前のバージョンをビルドしたものです。ただし、拡張子を Nginx コアにコンパイルする必要があるため、CSP のサポートを含めるには、Web サーバをソース・コードからローカルにビルドすることが必要です。
このページの手順の後、Web ゲートウェイ管理ページを使用して、さらに Web ゲートウェイを構成できます。
想定
ここでは、以下のように想定しています。
-
CSP/Web ゲートウェイの Web サーバ・コンポーネントは /opt/webgateway/bin/ にインストールされている
-
InterSystems IRIS はローカルにインストールされている場合は、/opt/iris/ に配置されている
-
Web サーバは /opt/nginx/ の下にインストールされている
システムのレイアウトが異なる場合は、必要に応じて、構成指示文を修正してください。
インストール
以下の Web ゲートウェイのコンポーネントおよび CSP 静的ファイルをインストールします。
-
Web ゲートウェイ Network Service Daemon (NSD)
-
CSPnsd
このバイナリの既定の場所は /opt/webgateway/bin/ です。
-
-
ハイパーイベントのコンポーネント
CSPBroker.js
CSPxmlhttp.js
これらのファイルの既定の場所は /opt/iris/csp/broker です。
これらのファイルが静的コンポーネントとして Web サーバによって直接処理される場合は、/opt/nginx/html/csp/broker にコピーしてください。
-
管理ポータルで使用するその他の静的リソース
管理ポータルでは、(イメージ・ファイルなど) いくつかの静的な Web リソースが必要になります。 これらのファイルの既定の場所は /opt/iris/csp/sys です。
これらのファイルが静的コンポーネントとして Web サーバによって直接処理される場合は、/opt/nginx/html/csp/sys にコピーしてください。
CSP のための Nginx Web サーバの構築
Web ゲートウェイ機能のほとんどは、NSD (CSPnsd) によって提供されます。 CSP アクセスのために、小さなコンパイル済みモジュール ngx_http_csp_module.c を介して NSD と通信するように、Nginx を構築および構成することができます。便宜のため、すべての Web ゲートウェイ・インストールにはこのソース・ファイルが含まれています。
ここで説明する構築手順は、UNIX® システム下で Nginx を構築するための公式ドキュメントに基づいています。
http://nginx.org/en/docs/configure.htmlOpens in a new tab
Nginx のドキュメントには、以下のサードパーティのアドオンが必要であると記載されています。
-
PCRE
-
OpenSSL (SSL/TLS の場合)
-
Zlib
ただし、最終インストールで、上記のコンポーネントによって提供される機能を必要としない場合は、これらのコンポーネントを使用しなくても十分に機能するサーバを作成することは可能です。
上記のオプションのモジュールすべてを含む、Nginx を構築するための一般的な構成スクリプトは、以下のとおりです。
./configure --prefix=/opt/nginx --with-http_ssl_module
これにより、既定の Nginx ビルドが /opt/nginx 下にインストールされます。
構築プロセスを以下のように変更して、オプションのモジュールを除外することもできます。
-
OpenSSL - SSL/TLS 機能を削除します。
指示文の削除:--with-http_ssl_module
-
Zlib - GZIP 機能を削除します。
指示文の追加:--without-http_gzip_module
-
PCRE - HTTP 書き換え機能を削除します。
指示文の追加:--without-http_rewrite_module
CSP のための Nginx の構築手順
-
ソース・ディストリビューションを任意の場所に解凍します。 例 :
/opt/
解凍後、/opt/ を指定すると、ソース・コード・ディストリビューションは以下に配置されます。
/opt/nginx-n.n.n/
-
CSP 拡張子に以下のディレクトリを作成します。
/opt/nginx-n.n.n/csp/
-
モジュールのソース・コード (ngx_http_csp_module.c) を、上記で作成したディレクトリにコピーします。
-
同じディレクトリ内に、config という名前の構成ファイルを作成します。 このファイルには、以下の行が含まれる必要があります。
ngx_addon_name=ngx_http_csp_module HTTP_MODULES="$HTTP_MODULES ngx_http_csp_module" NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_csp_module.c" CORE_LIBS="$CORE_LIBS -ldl"
-
/opt/nginx-n.n.n/ で作業し、Nginx 構築環境を構成します。
./configure --prefix=/opt/nginx --with-http_ssl_module --add-module=/opt/nginx-n.n.n/csp
または、OpenSSL、ZLIB、および PCRE により提供されるオプションの機能を使用しない場合は、以下のようになります。
./configure --prefix=/opt/nginx --without-http_rewrite_module --without-http_gzip_module --add-module=/opt/nginx-n.n.n/csp
最後の行に、CSP モジュールをインクルードする指示が含まれることに注意してください。
-
Nginx のコンパイル:
make
-
Nginx のインストール:
make install
成功した場合、以下のディレクトリに完全なサーバ・インストールが表示されます。
/opt/nginx/
Nginx での NSD の使用
インターシステムズのファイル・タイプの要求 (および、インターシステムズ・アプリケーションが処理する必要のあるその他の要求) を認識し、それらの要求を NSD に渡すように、Web サーバを構成する必要があります。
そのためには、/opt/nginx/conf にある Web サーバ構成ファイル (nginx.conf) を編集します。
ここでは、CSP 拡張モジュールが Web サーバの構成のために提供するサーバ構成指示文について説明します。location ブロックのコンテキスト内でこれらの指示文を発行すると、その指示文は指定されたパスのトラフィックに適用されます。
(必須。)NSD が待ち受けるアドレス (hostname と port) を指定します。
特定のパスの NSD アドレスを指定しない場合、NSD は既定で 127.0.0.1:7038 のアドレスで待ち受けます。
すべての要求に対し、Web ゲートウェイを介した CSP サーバへのルーティングを有効または無効にします。
特定のパスに適用する CSP 指示文を発行しない場合、そのパスに送信された要求は CSP off によりルーティングされず、Web サーバは Web ゲートウェイを介してそのパスに送信される要求をルーティングしません。
特定のファイル・タイプ (filetype1、filetype2 など) の要求を Web ゲートウェイを介して CSP サーバにルーティングできるようにします。
例えば、.csp または .cls ファイルを要求している場合 (そのような要求に限り)、Web ゲートウェイがその要求を /demo/app パスに送信するようにするには、以下の指示文ブロックを発行します。
location /demo/app { CSPFileTypes csp cls; }
指示文 CSPFileTypes * を発行することにより、すべてのファイル・タイプの要求のルーティングが有効になります。CSP on と同じ効果があります。
HTTP 応答のヘッダの最大サイズを指定します。応答ヘッダがこのサイズを超えると、Web クライアントはエラーを受け取ります。
既定では、CSP 拡張モジュールは指示文 CSPNSD_response_headers_maxsize 8k を適用します。
Web クライアントからの要求受信時の、NSD への接続タイムアウトを指定します。
既定では、CSP 拡張モジュールは指示文 CSPNSD_connect_timeout 300s を適用します。
単一の送信操作要求 (POST、PUT など) のタイムアウトを指定します。タイムアウトは連続する送信操作間でのみ適用されます。単一の送信が開始されてから完了までの間に適用されるものではありません。
既定では、CSP 拡張モジュールは指示文 CSP_send_timeout 300s を適用します。
単一の読み取り操作 (GET など) の応答が返る際のタイムアウトを指定します。タイムアウトは連続する読み取り操作間でのみ適用されます。単一の読み取りが開始されてから完了までの間に適用されるものではありません。
既定では、CSP 拡張モジュールは指示文 CSP_read_timeout 300s を適用します。
例 : 特定のパスでのすべてのトラフィックに対する CSP ルーティングを有効にする
適切な server 構成ブロック内に以下のセクションを配置し、/csp パスに送信されるすべてのトラフィックを Web ゲートウェイにルーティングします。
location /csp {
CSP On;
CSPNSD_pass localhost:7038;
}
例 : InterSystems IRIS のファイル・タイプに対する要求を Web ゲートウェイにルーティングする
適切な server 構成ブロック内に以下のセクションを配置し、/csp パスに送信される InterSystems IRIS のファイル・タイプ (.csp、.cls、.zen、および .cxw) に対する要求の CSP ルーティングを有効にします。
location /csp {
CSPFileTypes csp cls zen cxw;
CSPNSD_pass localhost:7038;
}
Nginx と NSD の起動および停止
Nginx を起動する方法は、以下のとおりです。
/opt/nginx/sbin/nginx
Nginx を停止する方法は、以下のとおりです。
/opt/nginx/sbin/nginx –s stop
NSD の操作方法については、"NSD の操作" を参照してください。
非推奨 : ユニバーサル・モジュールを使用する Nginx の構築
Nginx でのユニバーサル・モジュールの使用は、安定性に問題があるため推奨されていません。NSD を使用して Nginx に接続する Web ゲートウェイの導入では、WebSockets を含め、すべての機能を完全にサポートしています。
現在、Nginx でユニバーサル・モジュールを使用している場合は、Web ゲートウェイを最新バージョンにアップグレードし、NSD と連携するように Nginx サーバを再構築することをお勧めします。サーバ構成ファイルを編集する際は、サーバ構成から CSPModulePath 指示文を必ず削除してください。
以下の手順は、既存のインストールのリファレンスとしてのみ機能します。
動的にリンクされたユニバーサル・モジュール CSPx.so (実行時) と CSPxSys.so (Web ゲートウェイ・システム管理) と連携するように Nginx を構築できます。ユニバーサル・モジュールと連携するように Nginx を構築および構成する手順は、以下のように NSD ベースの導入とは異なります。
-
手順 3 で、モジュールのソース・コードとして、ngx_http_csp_module.c ではなく ngx_http_csp_module_sa.c、cspapi.h、および ngx_http_csp_common.h を指定のディレクトリにコピーします。
-
手順 4 で、CSP の構成ファイル (/opt/nginx-n.n.n/csp/config) は、以下のようになります。
ngx_addon_name=ngx_http_csp_module_sa HTTP_MODULES="$HTTP_MODULES ngx_http_csp_module_sa" NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_csp_module_sa.c"
-
CSPModulePath 指示文を http 構成ブロックから追加して、ユニバーサル・ゲートウェイ・モジュールへのパスを指定します。
CSPModulePath /opt/webgateway/bin;
-
以下の指示文はサポートされていません。
-
CSPNSD_pass
-
CSPNSD_response_headers_maxsize
-
CSPNSD_connect_timeout
-
CSPNSD_send_timeout
-
CSPNSD_read_timeout
-
-
以下の指示文はサポートされています。
-
CSP
-
CSPFileTypes
-