ApacheとNginxの違い

Share on:

今の職場では Apache を使っているんだが、最近は Nginx 一択なのではないかと言われている。
かつては WEB サーバといえば Apache 一択だったが、Nginx という新しい WEB サーバが出てきたがために、Apache に地位は追いやられてしまったようだ。
ただ、どのサイトが Apache または Nginx を使っているかはユーザからではわからない。
明らかにレスポンスが早いという違いも見られないのだが、実際にどのような違いがあるのかを調べてみた。

Apache とは

まず違いを明確に分けるには、プロセスモデルの特徴を知るべきである。
Apache はマルチプロセスモデルである。
マルチプロセスモデルとは、1 接続ごとにプロセスを使う。つまりプロセスが多くなるほど重くなるという欠点がある。
特に大きなサイトを扱う際にはこのデメリットが顕著に現れるだろう。
メリットとしては、設定が簡単であり、長年培ってきた知識から、情報量が多いということくらいである。
もちろん扱うことができる技術者の数も多い。
しかしこのメリットは時間とともに差を縮められるものだから、Apache が有利になる部分があまりない気がする。

Nginx とは

Nginx はシングルスレッドである。
1 つのスレッドでプロセスを処理するイメージだ。
1 つじゃ足りないじゃないかと思うかもしれないが、1 つのスレッドで順番に処理していくから高負荷に耐えることができる。
順番待ちしている分遅くなるかというと、そうでもなくてむしろ Apache より早いのである。
この具体的な理由はまだ勉強中だが、非同期で処理しているから裏ではプロセスを処理しているが、終わったプロセスからどんどん返していくということだろう。
Nginx はリバースプロキシとしての機能も持っていることから、負荷分散にも対応するという優れものである。
Apache より負荷に耐えつつ、さらに分散までできるとなると Apache に勝ち目はない気がする。

Nginx に軍配が上がる

Nginx は最近、利用者急増している、というより新規でサービスを作る際はほぼ Nginx を選定している気がする。
Apache を利用しているサービスは簡単には変更できない大手のレガシーなサービスだけになってくるのではないだろうか。
とはいえ、この大手企業のニーズがまだまだあるので、すぐに Apache に取って代わられるというわけでもないかもしれない。
ただ、もし今から WEB サーバを学びたいということであれば、Nginx をおすすめするし、Apache を使っている会社はレガシーであると決めて、他の会社を検討してもいいレベルである。