# nginx **nginx**(エンジンエックス)は、[[C10K問題]] の解法を体現したイベント駆動型 Web サーバ・リバースプロキシ・ロードバランサである。Igor Sysoev が 2004 年にリリース。 ## 設計の核心 - OS が提供する**最高効率のイベント通知機構を自動選択**する — Linux では [[epoll]]、BSD/macOS では [[kqueue]]、Solaris では `/dev/poll`。 - シングルスレッドのイベントループで数万の同時接続を処理。スレッドコンテキストスイッチコストを排除。 - **マスター/ワーカープロセスモデル** — マスターが設定・ソケット管理、複数ワーカーが接続処理を担当。ワーカー数は通常 CPU コア数に一致。 ## [[C10K問題]] との関係 [[C10K-Problem]] に「イベント駆動型の実用実装例」として登場する(記事ではシンプルに言及されている)。nginx は [[C10K問題]] が示した I/O 戦略2(エッジトリガ非ブロッキング I/O)を完全に実装し、Apache の process-per-connection モデルに代わって大規模サービスのデファクト Web サーバとなった。 ## 関連 - [[C10K問題]] — nginx の設計思想の背景 - [[epoll]] — Linux 上でのバックエンド - [[kqueue]] — BSD/macOS 上でのバックエンド