ApacheとNginxの違いと使い分け|「なぜ選んだか」を説明できますか?

HOMEリナックスマスター.JP 公式ブログLinux学習ガイド > ApacheとNginxの違いと使い分け|「なぜ選んだか」を説明できますか?
宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
リナックスマスター.JPの宮崎智広です。
いつもありがとうございます。

「Webサーバーは何を使いますか?」と聞かれたとき、技術的な根拠を持って答えられますか?

ApacheとNginxはどちらも定番のWebサーバーですが、「とりあえずApache」「なんとなくNginx」で選んでしまっている方は少なくありません。

この記事では、3,100名以上にLinuxを指導してきた経験から、ApacheとNginxの違いと、現場での使い分け基準を解説します。「なぜそれを選んだのか」を自分の言葉で説明できるようになることが目標です。
apache-nginx-tsukawake.png
【この記事でわかること】
・ApacheとNginxの処理方式の違い(プロセス/スレッド生成 vs イベント駆動)
・現場での使い分け3つの判断基準(同時接続数・動的処理・リバースプロキシ)
・現場で最も多い構成は「Nginx(リバースプロキシ)+Apache(アプリケーション処理)」
・「なぜそれを選んだか」を説明できることが現場で信頼される理由
・小〜中規模サイト・大規模サイト・API基盤それぞれの最適な選択肢
「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

「なぜApacheなんですか?」に答えられなかったSEの話

以前、セミナーの受講者からこんな話を聞きました。

その方がまだ駆け出しのSEだった頃、Webシステムの構築案件に参加したそうです。設計書にはWebサーバーとして「Apache」と書いてあり、当時はApacheが主流だったこともあって、何の疑問も持たずに作業を進めていました。

ところが、設計レビューの場で上流のSEからこう聞かれたそうです。

「なぜApacheなんですか?」

答えに詰まったと言っていました。頭に浮かんだのは「みんな使っているから」「前の案件でもApacheだったから」という理由だけ。技術的な根拠は何も持っていなかった。

結局その場では「実績があるので」としか答えられず、上流のSEにこう返されました。

「実績があるのはNginxも同じだよ。大事なのは、このシステムの要件にどちらが合っているかだ。」

私自身、15年以上サーバーを運用してきた経験から言うと、この上流SEの指摘はまさに正論です。「どちらが優れているか」ではなく、「何をさせたいかで選ぶもの」。これがWebサーバー選定の大原則です。

ApacheとNginxは「処理方式」が違う

ApacheもNginxも、HTTPリクエストを受け取ってページを返すWebサーバーソフトウェアです。基本的な役割は同じですが、リクエストの処理方式がまったく違います。

レストランに例えると分かりやすいので、その比喩で説明します。

Apache ── 専属ウェイター型

Apacheは、リクエストが来るたびに「プロセス」または「スレッド」を1つ割り当てて処理します。

レストランで言えば、お客さんが来るたびに専属のウェイターを1人つけるイメージです。お客さんが10人なら、ウェイターも10人。100人なら、100人。

一人ひとりに丁寧な対応ができる反面、お客さんが一気に増えるとウェイターが足りなくなります。つまり、同時に大量のアクセスが来ると、メモリを大量に消費して動作が重くなることがあります。

一方で、Apacheには大きな強みがあります。

.htaccessによる柔軟な設定変更:ディレクトリ単位で設定を上書きできる仕組みがあり、WordPressなどのPHPアプリケーションではURL書き換え(リダイレクト)に広く使われています
PHPとの連携が成熟している:mod_phpモジュールによる連携が長い歴史の中で安定しており、設定も簡単です

Nginx ── フロア全体を見渡す型

Nginxは、1つのプロセスで複数のリクエストを同時にさばきます。これを「イベント駆動型」と言います。

レストランの例えで言うと、少人数の優秀なウェイターがフロア全体を見渡しながら、「注文が入ったテーブル」「料理ができたテーブル」を順番にさばいていくイメージです。

お客さんが10人でも100人でも、ウェイターの数は変わりません。だから、同時接続が多い状況でもメモリの消費が少なく、安定して動作します。

ただし、Nginxには.htaccessの仕組みがありません。Apacheと同じことをするには、サーバーの設定ファイルを直接編集する必要があります。

現場での使い分け3つの判断基準

では、実際の現場ではどう使い分けているのか。私がセミナーで受講者に伝えている3つの判断基準を紹介します。

1. 静的コンテンツの配信が多いか

画像、CSS、JavaScriptファイルなど、サーバー側で処理が不要なファイルを「静的コンテンツ」と言います。

静的コンテンツの配信は、Nginxの方が得意です。イベント駆動型の処理方式が、「ファイルをそのまま返すだけ」の仕事と非常に相性が良いためです。

画像が多いサイト、CDN(コンテンツ配信ネットワーク)の裏側、ダウンロードサイトなどはNginxが適しています。

2. リバースプロキシが必要か

「リバースプロキシ」とは、Webサーバーが「受付窓口」の役割をして、実際の処理は裏側の別のサーバーに任せる仕組みです。

たとえば、こんな構成です。

# リバースプロキシ構成の例 [ユーザー] → [Nginx(受付)] → [Apache(処理)]

この構成を使うと、Nginxが静的コンテンツを高速に返し、動的な処理(PHPなど)はApacheに任せる、という「いいとこ取り」ができます。

実は、現場で最も多い構成がこれです。「ApacheかNginxか」の二択ではなく、「Nginx+Apache」の組み合わせにする。この構成を知っているかどうかが、設計力の差になります。

3. 同時接続数が多いか

社内の管理ツールのように同時に数人~数十人がアクセスする程度なら、ApacheでもNginxでも差はほとんどありません。

一方、インターネットに公開するサービスで同時に数百~数千のアクセスが見込まれる場合は、Nginxの方がメモリ効率が良く、安定します。

また、Nginxには複数のサーバーにリクエストを振り分ける「ロードバランサー(負荷分散)」の機能もあります。アクセスが増えたときにサーバーを追加して対応する「スケールアウト」という考え方で、この負荷分散の入口を知っているだけでもサーバー設計の視野が広がります。

現場で最も多い構成は「Nginx+Apache」

セミナーで3,100名以上を指導してきた中で、受講者から「ApacheとNginxどちらを使えばいいですか?」という質問をよく受けます。

私の回答はいつも同じです。

「どちらか一方ではなく、両方を知っておいてください。」

実際の現場では、Nginx+Apacheの二段構成が非常に多い。Nginxがフロントで受付をして、Apacheがバックエンドで処理をする。この構成を理解していれば、「なぜこの構成なんですか?」と聞かれたときにも、きちんと答えられます。

冒頭のSEの話に戻りますが、もし「このシステムは静的コンテンツが多いのでNginxの方が適しています」と答えられていたら。あるいは「動的処理はApacheに任せて、前段にNginxを置く構成を提案します」と言えていたら。上流SEからの評価はまったく違ったはずです。

「選べるエンジニア」になるには、両方を自分の手で構築した経験が必要です。

まとめ

用途・条件 選択
PHPアプリ(WordPress等)の運用 Apache
.htaccessを使いたい Apache
静的コンテンツの配信が多い Nginx
リバースプロキシとして使う Nginx
同時接続が多い Nginx
両方の良いとこ取り Nginx + Apache

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として15年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。


Linux無料マニュアル(図解60P) 名前とメールで30秒登録