Skip to content
Latchkey

Nginx vs Apache: どちらのWebサーバーを選ぶか

Nginxは並行処理向けにチューニングされたイベント駆動のサーバー兼リバースプロキシ。Apacheは柔軟でモジュールが豊富な定番Webサーバーで、ディレクトリ単位の設定が可能。

Nginxは非同期のイベント駆動モデルを採用し、少ないメモリで多数の同時接続を処理できるため、リバースプロキシや静的ファイルサーバーとして人気があります。Apacheはプロセス/スレッドモデルを採用し、豊富なモジュールサポートと.htaccessによるディレクトリ単位のオーバーライドを備え、柔軟性とレガシー互換性で評価されています。Nginxは純粋な並行性を、Apacheは設定の柔軟性とモジュールの幅広さを重視します。

NginxApache
モデルイベント駆動(非同期)プロセス/スレッド
静的ファイル非常に高速高速
設定中央集約、.htaccessなし.htaccessでディレクトリ単位
リバースプロキシ優秀良好(mod_proxy)
最適な用途高い並行性、プロキシ柔軟なモジュール、レガシー

ユースケースとパフォーマンス

Nginxは高い並行性のもとでのリバースプロキシ、load balancer、静的サーバーとして優れています。Apacheは豊富なモジュール、動的なディレクトリ単位の設定、あるいはApacheを前提とするアプリとの互換性が必要な場面で優れています。多くのスタックはNginxを前面に置き、アプリケーションサーバーへプロキシします。

CIとdeployにおいて

どちらもcontainerにbuildされ、標準的なイメージpipelineで配布されます。deployの前にCIで設定のsmoke-test(nginx -t / apachectl configtest)を行いましょう。いずれもマネージドrunnerからクリーンにdeployでき、より高速なrunnerはイメージbuildと設定テストのステップを短縮します。

結論

高い並行性のリバースプロキシ、load balancing、静的配信ならNginx。豊富なモジュール、ディレクトリ単位の設定、レガシーアプリの互換性ならApache。よくあるパターンは、Nginxをエッジのプロキシとして置き、その背後にApache(またはアプリケーションサーバー)を配置する構成です。

関連ガイド