本日、私たちはオープンソースのNGINX バージョン 1.9.11 をリリースしました。このバージョンには、NGINX とNGINX Plus の使用方法に大きな影響を与えると思われる新機能、動的モジュールが搭載されています。 動的モジュールを使用すると、オプションで、実行時に個別の共有オブジェクト ファイルをモジュールとして読み込むことができます。これには、サードパーティ モジュールと一部のネイティブ NGINX モジュールの両方が含まれます。 新しい実装では、モジュール API との下位互換性が可能な限り維持されます。
エディター – NGINX 1.11.5 以降 (および NGINX Plus R11 以降) では、完全な NGINX バイナリをコンパイルせずに動的モジュールをコンパイルできます。 手順については、 「NGINX Plus 用の動的モジュールのコンパイル」を参照してください。
次の NGINX Plus リリース (NGINX Plus R9) では、この動的モジュール機能が構築されます。 NGINX Plus に対してテストおよび認定されたさまざまなサードパーティ モジュールを備えたマネージド NGINX モジュール リポジトリを確立する予定です。これにより、NGINX Plus に一般的な拡張機能を自信を持って追加しやすくなります。 オープンソースまたは商用モジュールを弊社のリポジトリに含めたい場合は、 「営業へのお問い合わせ」リンクからご連絡ください。
これまでは、NGINX 用のモジュールを作成する場合、NGINX ソース コードとともに NGINX バイナリにコンパイルする必要がありました。 望むと望まざるとにかかわらず、モジュールは毎回 NGINX でロードされました。 これにより、オペレーティング システム ディストリビューションのパッケージ作成者にとって、すべてのユーザー向けにカスタム NGINX バイナリを作成することが非常に困難になりました。
動的モジュールの最初のリリースでは、オプションの NGINX モジュールを NGINX バイナリと同時にコンパイルする必要がありますが、動的にロードされるモジュールごとに個別の共有オブジェクトを作成し、NGINX 構成ファイル内のディレクティブを使用して、実行時に共有オブジェクトのロードを有効または無効にすることもできます。
最初のリリースでは、次の NGINX モジュールとモジュール バンドルを動的に構築できます。
ngx_http_geoip_module
)ngx_http_image_filter_module
)ngx_mail_{ core 、 auth 、 imap 、 pop3 、 proxy 、 smtp 、 ssl }_module
)ngx_stream_{ core 、 access 、 limit_conn 、 proxy 、 ssl 、 uploaded }_module
)ngx_http_xslt_module
)動的にロード可能な共有オブジェクトを生成するには、標準の--with_モジュール
引数に=dynamic
を追加します。
# ./configure --with-http_geoip_module=dynamic --with-http_image_filter_module=dynamic --with-mail=dynamic --with-stream=dynamic --with-http_xslt_module=dynamic
NGINX 1.9.11 ソースコードをインストールすると、 modulesという新しいサブディレクトリが作成され、ビルド プロセスによってバイナリ共有オブジェクトがそこに配置されます。 デフォルトでは、パスは/usr/local/nginx/modulesです。
実行時にモジュールをロードするには、メイン コンテキストに新しいload_module
ディレクティブを含め、引用符で囲んでモジュールの共有オブジェクト ファイルへのパスを指定します。 設定を再読み込みするか、NGINX を再起動すると、動的モジュールが読み込まれます。 これらの例のように、ソース ディレクトリへの相対パス、またはフル パスを指定できます。
モジュールをロードします "modules/ngx_http_geoip_module.so"; モジュールをロードします "modules/ngx_stream_module.so";
モジュールを動的に「アンロード」するには、 load_module
ディレクティブをコメントアウトまたは削除し、NGINX 構成を再ロードします。 ファイル内の他のディレクティブがアンロードするモジュールに関連している場合は、それらもコメントアウトまたは削除することを忘れないでください。
多くのサードパーティの従来のモジュールの開発者にとって、動的読み込みへの変換にはほとんど作業は必要ありません。 多くの場合、モジュール ソース コードの構成ファイルを編集するだけで済みます。 他のモジュールでは、もう少し作業が必要になります。 NGINX Wiki には、モジュール変換ガイドと、モジュール ソース構成ファイルの形式に関する詳細情報が含まれています。
変換されたサードパーティ モジュールをコンパイルするには、新しい--add-dynamic-module
引数を使用してパスを指定します。
# ./configure --add-dynamic-module= /path/to/module/source
NGINX モジュールと同様に、共有オブジェクトがmodulesサブディレクトリに作成されインストールされ、そのload_module
ディレクティブが NGINX 構成に追加されます。 弊社の開発者リレーションチームがモジュールの変換をお手伝いします。 NGINX 開発メーリングリストからお問い合わせください。
今後のリリースでは、NGINX バイナリがコンパイルされた後にモジュールをコンパイルする機能を追加する予定です。 また、モジュール API のドキュメント化も進行中であり、このドキュメントは完了するとNGINX Wikiで無料で利用できるようになります。
動的モジュールを実際に試してみるには、 NGINX 1.9.11 をダウンロードしてください。
NGINX Plus をお試しいただくには、今すぐ30 日間の無料トライアルを開始するか、弊社にお問い合わせの上、使用事例についてご相談ください。
「このブログ投稿には、入手できなくなった製品やサポートされなくなった製品が参照されている場合があります。 利用可能な F5 NGINX 製品およびソリューションに関する最新情報については、 NGINX 製品ファミリーをご覧ください。 NGINX は現在 F5 の一部です。 以前の NGINX.com リンクはすべて、F5.com の同様の NGINX コンテンツにリダイレクトされます。"