開閉ボタン
ユーザーメニュー
ユーザーメニューコンテンツ
ログイン

  • 会員限定
  • 2021/07/30

NginxとApacheをわかりやすく比較、Nginxが「絶対王者」のApacheを超えたワケ

連載:サーバ自動化の勘所

我々は日々、「情報」を得るためにPCやスマートフォンなど、さまざまな情報端末でWebサイトやWebシステムへアクセスしている。アクセスした先にはWebサーバがあり、要求に対する処理を行うことでリクエスト元である端末に情報が届けられている。では、システムにとって最適なWebサーバとは何なのか。ここでは、数あるWebサーバの中でも、長らく不動の1位だったApacheを抜き去った「Nginx(エンジンエックス)」について、基礎からコンテナ活用まで分かりやすく解説していこう。

BFT SI技術本部 吉原 公太

BFT SI技術本部 吉原 公太

アミューズメント業界から、インフラの仕組みに興味を持ち、インフラに強みを持つBFTに入社。現在、大手製造業のシステム設計から運用まで携わっており、NginxやApacheなどのさまざまなOSSを用いた大規模Webシステムと日々向かい合っている。

BFT
東京、名古屋にてシステムインフラの強みを活かした基盤構築自動化サービスやIT技術の教育サービスなどを展開している。
https://www.bfts.co.jp/biz

BFTオウンドメディア
https://www.users-digital.com/

画像
今もっとも使われるWebサーバになった「Nginx」とは

Nginxとは何か?

画像
Webサーバ用ソフトウェアのシェア
(出典:W3Techs.com
 Nginx(エンジンエックス)とはNGINX社が提供しているフリーかつオープンなWebサーバ用のソフトウェアで、大量のクライアントからのアクセスを同時に処理しようとするとレスポンスが大きく下がる「C10K問題」に焦点をあてて開発が行われているのが特徴だ。

 2021年6月時点でのWebサーバソフトウェアのシェア(出典:W3Techs.com)を見ると、Nginxはこれまで長く「絶対王者」として君臨していたApacheを抜き、1位となっている。NginxがなぜApache越えを果たすことができたのか。そこにはNginxの機能や特徴に理由がある。

Apacheと何が違うのか

 NginxとApacheの違いについて、それぞれの特徴を一言で表すと以下のような言い方ができる。

Nginx:特化タイプのWebサーバ
Apache:オールマイティータイプのWebサーバ

 Apacheは、すべての動作を平均的にこなすことができる、オールマイティーなWebサーバといえる。

 Nginxは「静的コンテンツの表示」や「リバースプロキシ」、「ロードバランサー」といったWebサーバとしての基本的な動作を得意としており、その得意な動作に特化したWebサーバとなっている。逆をいうと、それ以外(PHPコンテンツの動作など)は苦手ということになる。

 また、NginxはApacheに比べ、サーバのメモリ消費量を抑えることができる特徴がある。これは、NginxとApacheのプロセスの仕組みの違いから読み解くことができる。

 Nginxはシングルスレッドのプロセスで、たくさんのリクエストを並列で処理するアーキテクチャーとなっている一方、Apacheは基本的にマルチプロセスとなっており、1リクエストに対して1プロセスで処理を行う。Apacheは同時接続のリクエストが増えれば増えるほどプロセスが増加し、サーバのメモリを消費してしまい、やがてメモリ使用に限界を迎え、サーバがパンクする。これが冒頭で触れたC10K問題である。

 そのため、Nginxは得意とする処理に限り、Apacheと比較してメモリ消費量を抑えることができるうえ、大量の同時接続処理を早く処理することができる。すなわち、先に結論をまとめると以下ということになる。

比較項目NginxApache
静的コンテンツ処理
動的コンテンツ処理×
並列処理性能
低リソース消費×
コスト(イニシャル/ランニング)

Nginxを利用する3つのメリット

 前段でも記載した通り、Nginxは多くのリクエストを並列で早く処理することができるため、同時接続数が多い大規模サイトでの活用で、その力を最大限に発揮できる。

 では、小~中規模サイトでは力を発揮できないかというとそうでもない。Nginxの特徴として、サーバのメモリ使用量を抑えることができるため、「リクエスト処理性能は妥協したくないが、コストをできる限り抑えたい」といった場合でも、その効果を発揮することができるからだ。

 Nginxの場合、1サーバあたりのリクエスト処理数を増やすことができるため、サーバを何台も用意する必要がなくなり、初期費用、ランニングコストの削減につながる点は大きなメリットと言えるだろう。

Nginxの強み
項目内容
高速処理リクエストを並列処理
メモリ消費少シングルスレッドのためメモリ消費が少ない
費用削減初期費用、ランニングコストの削減が可能

Nginxに不向きな用途とは?

 良いことばかりに聞こえるNginxではあるが、検討の際は当然デメリットも合わせて確認する必要がある。

 Web・AP(アプリケーション)・DB(データベース)といった「Web3層構造」と呼ばれるシステム構成のWebシステムにおいて、WebサーバとAPサーバを同一サーバに集約し、コストを抑えたいという場合は、WebサーバとしてNginx採用は最適とは言えない。

 NginxはApacheに比べ、Webアプリケーションでよく用いられるPHPやPerl、CGIなどで実装される動的コンテンツのようなCPUを使った処理が得意ではない。

 静的コンテンツのみで完結するWebシステムであれば問題はないが、Webアプリケーションを動作させる場合は、アプリケーションサーバを導入し、リクエストをリバースプロキシするような構成をとる必要がある。

 このように、NginxはApacheと違い、Nginx単体でシステムを完結させる構成には向いていない。

Nginxの弱み
項目内容
CPUを使う処理が苦手PHPやPerl、CGIなどのCPUを使用するコンテンツの処理は苦手
APサーバーの役割は担えないCPUを使用する処理は苦手なため、WebサーバーとAPサーバーを兼務はできない

【次ページ】Nginxが最適な3つの活用例

photo
次ページでは3つの具体的な利用方法を図解します

Web戦略・EC ジャンルのトピックス

Web戦略・EC ジャンルのIT導入支援情報

ビジネス+IT 会員登録で、会員限定コンテンツやメルマガを購読可能、スペシャルセミナーにもご招待!