Web ゲートウェイと連携させるための Nginx の構築と構成 (Windows)
ここでは、Windows 上の InterSystems Web ゲートウェイで使用するための、Nginx Web サーバの構築および構成方法について説明します。(Windows では、その他の選択肢として、Apache と IIS がありますが、この場合のオプションはその他のオペレーティング・システムとは異なります。)
Nginx はオープン・ソース製品です。ソース・コードは http://nginx.org/Opens in a new tab から無料でダウンロードできます。
Windows 用の一部のビルド済みキットを入手できますが、通常、これは最新の Nginx ビルドよりもいくつか前のバージョンをビルドしたものです。ただし、拡張子を Nginx コアにコンパイルする必要があるため、CSP のサポートを含めるには、Web サーバをソース・コードからローカルにビルドすることが必要です。
このページの手順の後、Web ゲートウェイ管理ページを使用して、さらに Web ゲートウェイを構成できます。
想定
ここでは、以下のように想定しています。
システムのレイアウトが異なる場合は、必要に応じて、構成指示文を修正してください。
インストール
以下の Web ゲートウェイのコンポーネントおよび CSP 静的ファイルをインストールします。
-
Web ゲートウェイ Network Service Daemon (NSD)
これらのファイルの既定の場所は install-dir\bin です。
構成ファイルとログ・ファイルは、このディレクトリに書き込まれます。
-
ハイパーイベントのコンポーネント
-
CSPBroker.js
-
CSPxmlhttp.js
これらのファイルの既定の場所は install-dir\csp\broker です。
これらのファイルが静的コンポーネントとして Web サーバによって直接処理される場合は、C:\nginx\html\csp\broker にコピーしてください。
-
管理ポータルで使用するその他の静的リソース
管理ポータルでは、(イメージ・ファイルなど) いくつかの静的な Web リソースが必要になります。 これらのファイルの既定の場所は install-dir\csp\sys です。
これらのファイルが Web サーバによって直接処理される場合は、C:\nginx\html\csp\sys にコピーしてください。
CSP のための Nginx Web サーバの構築
Web ゲートウェイ機能のほとんどは、NSD (CSPnsd[Sv].exe) によって提供されます。CSP アクセスのために、小さなコンパイル済みモジュール ngx_http_csp_module.c を介して NSD と通信するように、Nginx を構築および構成することができます。便宜のため、すべての Web ゲートウェイ・インストールにはこのソース・ファイルが含まれています。
Nginx 構築の前提条件 :
ここで説明する構築手順は、Windows 下で Nginx を構築するための公式ドキュメントに基づいています。
http://nginx.org/en/docs/howto_build_on_win32.htmlOpens in a new tab
Nginx のドキュメントには、以下のサードパーティのアドオンが必要であると記載されています。
ただし、最終インストールで、上記のコンポーネントによって提供される機能を必要としない場合は、これらのコンポーネントを使用しなくても十分に機能するサーバを作成することは可能です。
上記のオプションのモジュールすべてを含む、Nginx を構築するための既定の構成スクリプトは、以下のとおりです。
auto/configure \
--with-cc=cl \
--with-debug \
--prefix= \
--conf-path=conf/nginx.conf \
--pid-path=logs/nginx.pid \
--http-log-path=logs/access.log \
--error-log-path=logs/error.log \
--sbin-path=nginx.exe \
--http-client-body-temp-path=temp/client_body_temp \
--http-proxy-temp-path=temp/proxy_temp \
--http-fastcgi-temp-path=temp/fastcgi_temp \
--http-scgi-temp-path=temp/scgi_temp \
--http-uwsgi-temp-path=temp/uwsgi_temp \
--with-cc-opt=-DFD_SETSIZE=1024 \
--with-pcre=objs/lib/pcre-8.44 \
--with-zlib=objs/lib/zlib-1.2.12 \
--with-openssl=objs/lib/openssl-1.1.1k \
--with-openssl-opt=no-asm \
--with-http_ssl_module
構築プロセスを以下のように変更して、オプションのモジュールを除外することもできます。
-
OpenSSL - SSL/TLS 機能を削除します。
指示文の削除:--with-http_ssl_module
-
Zlib - GZIP 機能を削除します。
指示文の追加:--without-http_gzip_module
-
PCRE - HTTP 書き換え機能を削除します。
指示文の追加:--without-http_rewrite_module
CSP のための Nginx の構築手順
-
MSYS2 シェルで作業を開始し、Nginx のドキュメントで推奨される作業ディレクトリ構造を作成します。
/opt/
-
/opt で作業して、以下のコマンドを使用して Nginx ソース・コードをチェックアウトします。
hg clone http://hg.nginx.org/nginx
これにより、Nginx ソース・コードが /opt/nginx/ の下に配置されます。
-
CSP 拡張子に以下のディレクトリを作成します。
mkdir /opt/nginx/objs/lib/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"
-
/opt/nginx/ で作業し、Nginx 構築環境を構成します。
auto/configure --with-cc=cl --builddir=objs --prefix=
--conf-path=conf/nginx.conf --pid-path=logs/nginx.pid
--http-log-path=logs/access.log --error-log-path=logs/error.log
--sbin-path=nginx.exe
--http-client-body-temp-path=temp/client_body_temp
--http-proxy-temp-path=temp/proxy_temp
--http-fastcgi-temp-path=temp/fastcgi_temp
--with-cc-opt=-DFD_SETSIZE=1024 --without-http_rewrite_module
--without-http_gzip_module
--with-select_module --with-ipv6
--add-module=objs/lib/csp
最後の行に、CSP モジュールをインクルードする指示が含まれることに注意してください。
-
Nginx をコンパイルします。これは、現在の MSYS2 シェルまたは Visual Studio 開発者コマンド・プロンプトで実行できます。
MSYS2 シェルを使用するには、目的の Visual Studio 構築環境に対応する vcvarsall.bat スクリプトを見つけて、Nginx をコンパイルします。
cd /c/path/to/vcvarsall
vcvarsall.bat
cd -
nmake -f objs/Makefile
vcvarsall.bat を探す場所がわからない場合は、Visual Studio 開発者コマンド・プロンプトを開くと、構築環境が設定されます。まず、MSYS2 パスを現在の MSYS2 シェル内の同等の Windows パスに変換します。
cygpath –m $(pwd)
次に、目的の構築環境のために Visual Studio コマンド・プロンプトを開き、その Windows パスに移動します。Nginx をコンパイルします。
nmake -f objs/Makefile
成功した場合、/opt/nginx/objs/ にサーバ (nginx.exe) が表示されます。
-
Nginx のインストール : これを実行する最も簡単な方法は、まず Windows 用の Nginx の事前構築済みバージョンをダウンロードおよびインストールして、ディレクトリ構造 (通常 C:\nginx\) を取得し、次にそのインストール内の nginx.exe ファイルを、ローカルで作成したものと置き換えることです。
動作可能な Nginx インストールの通常のディレクトリ構造は、以下のとおりです。
Directory of C:\nginx
03/07/2017 09:09 <DIR> .
03/07/2017 09:09 <DIR> ..
26/06/2017 10:14 <DIR> conf
26/06/2017 10:14 <DIR> contrib
10/05/2018 12:53 <DIR> csp
26/06/2017 10:14 <DIR> docs
26/06/2017 10:14 <DIR> html
10/05/2018 15:57 <DIR> logs
04/07/2017 15:52 715,264 nginx.exe
26/06/2017 10:17 <DIR> scgi_temp
26/06/2017 10:17 <DIR> temp
26/06/2017 10:17 <DIR> uwsgi_temp
このディレクトリの nginx.exe のコピーを、構築手順で作成したバージョンで置き換えます。
Nginx での NSD の使用
インターシステムズのファイル・システムの要求を認識し、これらの要求 (および InterSystems IRIS アプリケーションが処理するその他の静的ファイルの要求) を処理のため NSD に渡すよう、Web サーバを構成する必要があります。
そのためには、C:\nginx\conf にある Web サーバ構成ファイル (nginx.conf) を編集します。
ここでは、CSP 拡張モジュールが Web サーバの構成のために提供するサーバ構成指示文について説明します。location ブロックのコンテキスト内でこれらの指示文を発行すると、その指示文は指定されたパスのトラフィックに適用されます。
CSPNSD_pass hostname:portNum;
(必須。)NSD が待ち受けるアドレス (hostname と port) を指定します。
特定のパスの NSD アドレスを指定しない場合、NSD は既定で 127.0.0.1:7038 のアドレスで待ち受けます。
CSP on; および CSP off;
すべての要求に対し、Web ゲートウェイを介した CSP サーバへのルーティングを有効または無効にします。
特定のパスに適用する CSP 指示文を発行しない場合、そのパスに送信された要求は CSP off によりルーティングされず、Web サーバは Web ゲートウェイを介してそのパスに送信される要求をルーティングしません。
CSPFileTypes filetype1[ filetype2...];
特定のファイル・タイプ (filetype1、filetype2 など) の要求を Web ゲートウェイを介して CSP サーバにルーティングできるようにします。
例えば、.csp または .cls ファイルを要求している場合 (そのような要求に限り)、Web ゲートウェイがその要求を /demo/app パスに送信するようにするには、以下の指示文ブロックを発行します。
location /demo/app {
CSPFileTypes csp cls;
}
指示文 CSPFileTypes * を発行することにより、すべてのファイル・タイプの要求のルーティングが有効になります。CSP on と同じ効果があります。
CSPNSD_response_headers_maxsize size;
HTTP 応答のヘッダの最大サイズを指定します。応答ヘッダがこのサイズを超えると、Web クライアントはエラーを受け取ります。
既定では、CSP 拡張モジュールは指示文 CSPNSD_response_headers_maxsize 8k を適用します。
CSPNSD_connect_timeout time;
Web クライアントからの要求受信時の、NSD への接続タイムアウトを指定します。
既定では、CSP 拡張モジュールは指示文 CSPNSD_connect_timeout 300s を適用します。
CSPNSD_send_timeout time;
単一の送信操作要求 (POST、PUT など) のタイムアウトを指定します。タイムアウトは連続する送信操作間でのみ適用されます。単一の送信が開始されてから完了までの間に適用されるものではありません。
既定では、CSP 拡張モジュールは指示文 CSP_send_timeout 300s を適用します。
CSPNSD_read_timeout time;
単一の読み取り操作 (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 を起動する方法は、以下のとおりです。
C:\nginx\nginx
Nginx を停止する方法は、以下のとおりです。
C:\nginx\nginx –s stop
NSD の操作方法については、"NSD の操作" を参照してください。
非推奨 : ユニバーサル・モジュールを使用する Nginx の構築
Important:
Nginx でのユニバーサル・モジュールの使用は、安定性に問題があるため推奨されていません。NSD を使用して Nginx に接続する Web ゲートウェイの導入では、WebSockets を含め、すべての機能を完全にサポートしています。
現在、Nginx でユニバーサル・モジュールを使用している場合は、Web ゲートウェイを最新バージョンにアップグレードし、NSD と連携するように Nginx サーバを再構築することをお勧めします。サーバ構成ファイルを編集する際は、サーバ構成から CSPModulePath 指示文を必ず削除してください。
以下の手順は、既存のインストールのリファレンスとしてのみ機能します。
NSD の代わりに動的にリンクされたユニバーサル・モジュール CSPx.dll (実行時) と CSPxSys.dll (Web ゲートウェイ・システム管理) と連携するように Nginx を構築できます。ユニバーサル・モジュールと連携するように Nginx を構築および構成する手順は、以下のように NSD ベースの導入とは異なります。
-
手順 5 で、CSP の構成ファイル (/opt/nginx/objs/lib/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 install-dir/bin;
-
Windows の場合、スレッド・スタック・サイズを 2MB まで増やす必要があります。以下の指示文を Nginx 構成ファイルの先頭 (http セクションの前) に追加します。
thread_stack_size 2000000;
-
以下の指示文はサポートされていません。
-
以下の指示文はサポートされています。