オープンソースプロジェクト
nginx/nginx avatar
nginx/nginx

NGINXをmasterとworker、モジュール、設定から読む

NGINX は、高トラフィックのアプリケーションの提供、ルーティング、バランスをとるために使用される Web サーバーとリバース プロキシのソースです。

スター 31,647フォーク 8,301CBSD-2-Clause

ひと目でわかる

これは何?
Cで書かれたNGINXのREADMEを、公式バイナリ、設定ディレクティブ、ソースビルドの境界から整理します。
誰に向いている?
HTTP配信、リバースプロキシ、ロードバランシングを自分で設定管理する運用者に向きます。最初に `nginx -V` で有効モジュールを確認し、`auto/configure` と `make` の結果、`curl localhost` の応答を同じ版で記録してください。
商用利用できる?
できます。BSD-2-Clause は寛容なライセンスで、著作権表示とライセンス表示を残せば、使用・改変・販売が可能です。
今もメンテナンスされている?
されています。直近 1 日以内に新しいコミットがあります。
何の言語で書かれている?
主に C です(GitHub の言語統計による)。

回答はプロジェクトの GitHub データ(最終同期:2026年9月15日)と当サイトの分析に基づくもので、法的助言ではありません。

オープンソース詳細解説

nginx-nginxのNGINXの自己紹介とmasterブランチ

README は冒頭で、NGINX を世界で最も人気のある Web サーバー、高性能ロードバランサー、リバースプロキシ、API ゲートウェイ、コンテンツキャッシュと説明しています。また、NGINX は簡素化された 2 条項 BSD 類似ライセンスの下で配布される無料のオープンソースソフトウェアであると述べています。README は、初心者ユーザーに基本的で構造化された入門を提供することを目的としており、インストール、ビルド、設定、デバッグ、初心者ガイド、ハウツー、開発ガイド、モジュールおよびディレクティブリファレンスについては、nginx.org の完全なドキュメントを参照するよう指示しています。このリポジトリは公式の NGINX オープンソースリポジトリであり、C 言語で書かれ、デフォルトブランチは master です。

nginx-nginxのモジュールとmaster-workerの役割分担

README は、NGINX がコア機能を拡張する個々のモジュールで構成されていると説明しています。モジュールは静的または動的としてビルドおよび配布できます。静的モジュールはビルド時に定義され、動的モジュールは後から追加できます。設定はテキストベースで、ディレクティブと呼ばれるパラメータを使用します。利用可能なディレクティブは、有効なモジュールに依存します。ランタイムでは、NGINX はワーカープロセスを維持し設定ファイルを読み取るマスタープロセスと、HTTP リクエストなどのデータを処理する 1 つ以上のワーカープロセスを使用します。ワーカープロセスの数は設定ファイルで固定するか、利用可能な CPU コア数に応じて自動調整できます。プロセスは共有メモリを介してデータを同期します。そのため、レート制限などのディレクティブはクライアントを追跡するための共有メモリゾーンを必要とします。

nginx-nginxのstable、mainline、動的モジュールの選択

stable と mainline の 2 つのバイナリバージョンが提供されています。stable バイナリは安定ブランチからビルドされ、mainline からバックポートされた重要な修正のみが含まれます。mainline バイナリは master ブランチからビルドされ、最新の機能とバグ修正が含まれます。Linux では、インストールはネイティブのパッケージマネージャに依存しており、初回インストールでは公式 NGINX パッケージリポジトリを追加する必要があります。アップグレードは同じパッケージマネージャを使用します。FreeBSD のインストールは外部ドキュメントで説明されています。Windows 実行ファイルは利用可能ですが、概念実証段階であり、開発とテストのみを目的としています。動的モジュールはバージョン 1.9.11 で追加され、コアバイナリをビルドした後でモジュールをダウンロードしてインストールできるようになりました。公式動的モジュールバイナリはコアバイナリと同じパッケージリポジトリから入手できます。README は、JavaScript で NGINX を拡張する動的モジュールである njs に言及しています。

nginx-nginxのTLSと負荷分散を外部資料へ切り出す構成

README には特定のユースケースの設定例は含まれておらず、代わりに外部リソースへのリンクを提供しています。SSL 証明書と TLS 暗号化については、「Configuring HTTPS servers」ドキュメントを指しています。ロードバランシングについては、「Using nginx as HTTP load balancer」にリンクしています。レート制限はブログ記事で、コンテンツキャッシュは NGINX と NGINX Plus でのキャッシュに関するガイドでカバーされています。README は初心者ガイドも指しています。利用可能なディレクティブのセットは有効なモジュールに依存するため、特定の設定は実際にインストールされているモジュールセットに対して検証する必要があると述べています。

nginx-nginxのauto/configureからobjs/nginxまでのビルド

ソースからのビルドには依存関係が必要です。Debian/Ubuntu では、README は apt を使用して gcc、make、libpcre3-dev、zlib1g-dev をインストールするよう指示しており、TLS が必要な場合は libssl-dev を追加します。リポジトリをクローンした後、ソースルートから auto/configure を実行して Makefile を生成します。フラグなしでデフォルトビルドになります。その後 make を実行すると、バイナリは objs/nginx に生成されます。インストールするには sudo make install を実行し、バイナリは /usr/local/nginx/ に配置されます。インストールされたバイナリは sudo /usr/local/nginx/sbin/nginx で実行され、curl localhost でテストすると、README に示されている HTML で始まるウェルカムページが返されるはずです。

nginx-nginxのSUPPORT、CONTRIBUTING、2条項BSDの範囲

README は、コードベースの議論、トラブルシューティング、問題報告については SUPPORT.md を、コード貢献については CONTRIBUTING.md を指しています。変更履歴は nginx.org で入手できます。ライセンスは 2 条項 BSD 類似ライセンスです。リポジトリ内の抜粋は Igor Sysoev と Nginx, Inc. に著作権があります。ソース形式とバイナリ形式の再配布を許可し、著作権表示と免責事項の保持を条件とし、すべての保証と責任を否認します。ライセンステキストはセキュリティ保証、サポート、メンテナンスの約束については言及していません。

対象版を固定したら、`nginx -V` の静的モジュール一覧、設定ファイルで指定した `worker_processes`、レート制限の共有メモリゾーンを照合します。ソースビルドでは `objs/nginx` が生成され、`sudo make install` 後は `/usr/local/nginx/sbin/nginx` から起動できるかを確認します。TLS、ロードバランサー、キャッシュの具体的なディレクティブはREADMEではなくリンク先の公式文書に委ねられているため、記述範囲を混同しません。

編集部の結論

HTTP配信、リバースプロキシ、ロードバランシングを自分で設定管理する運用者に向きます。最初に `nginx -V` で有効モジュールを確認し、`auto/configure` と `make` の結果、`curl localhost` の応答を同じ版で記録してください。Windows版はREADME上で開発とテスト向けなので、本番候補とは分けて扱います。

公式情報源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
コミュニティノート

コミュニティノート