MENU

Nginx — 高性能Webサーバ・リバースプロキシのデファクト

Nginx アイキャッチ
Nginx

Nginx(エンジンエックス)は2004年、ロシアのイーゴリ・シソエフが公開した高性能Webサーバ/リバースプロキシです。当時主流だったApache HTTP Serverが大量同時接続で苦戦していた「C10K問題」への解として誕生し、イベント駆動の軽量アーキテクチャで桁違いの同時接続数を捌けることから一気に普及しました。現在は世界のWebサーバシェアでApacheと首位を争う存在です。

目次

この記事の目次

  1. Nginxの主な使われ方
  2. イベント駆動アーキテクチャ
  3. Nginx設定の基本
  4. 近年の選択肢の広がり
  5. まとめ

Nginxの主な使われ方

Nginxの主な使われ方

Nginxは単一の役割に縛られず、Webサーバ・リバースプロキシ・ロードバランサ・キャッシュ・APIゲートウェイなど多用途に使われます。現代的なWebサービスでは「ユーザのHTTPSを受けてアプリ(Node.js/Pythonなど)に流す前段」として配置されるのが典型構成です。

静的ファイル配信の速度はApacheより数倍速いとされ、画像・CSS・JSの配信、SSL終端、gzip圧縮等を任せてバックエンドの負荷を下げるのが定石です。Nginx Plusという商用版もありますが、OSS版でも本番運用に十分です。

イベント駆動アーキテクチャ

イベント駆動アーキテクチャ

Apacheが伝統的にリクエストごとにプロセス/スレッドを割り当てる方式(prefork/worker)なのに対し、Nginxは少数のワーカープロセスがイベントループで多数の接続を多重化して処理します。結果として同じハードウェアで桁違いの同時接続数をさばけ、メモリ消費も大幅に抑えられます。

Apacheも後にイベント駆動MPM(event)を導入し、両者の性能差は縮まりましたが、リバースプロキシ用途における設定のシンプルさと実績の蓄積で、Nginxが現在最も選ばれやすい選択肢になっています。

Nginx設定の基本

Nginx設定の基本

Nginxの設定は nginx.conf をルートに、サイトごとに server ブロック、URLパターンごとに location ブロックを書く構造です。Apacheの .htaccess と違ってリクエストごとに読み込まないため、ファイルアクセスのオーバーヘッドが少ない反面、設定変更は nginx -s reload で明示的に反映する必要があります。

リロードは無停止で行われ、既存接続を保ったまま設定が切り替わるのが特徴。設定ミスがあるとリロード前にエラーで止まるため、本番反映前に nginx -t で構文チェックする習慣が事故防止に効きます。

近年の選択肢の広がり

近年の選択肢の広がり

Nginxは依然として最有力ですが、用途特化の競合も存在感を増しています。Caddyは自動Let's Encrypt連携が標準で個人開発に人気、TraefikはDocker/Kubernetesと密に連動する動的設定が強み、EnvoyはService Meshの中核として位置付けが固まりつつあります。

とはいえ「枯れていて確実に動く」点でNginxは依然として現場の第一候補。新しいプロキシを採用する場合も、Nginxの設定経験は大きな下敷きになります。

まとめ

Nginxは高性能・軽量・安定の三拍子で、20年近くWebインフラの根幹を支えてきました。Webサービスを運用するなら、Nginxの設定が読み書きできる力は必ず役立ちます。

※本記事はIT用語辞典の手書きドラフトです。公開前に最新情報・出典を確認のうえ加筆修正してください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次