# 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 上でのバックエンド