• 会員限定
  • 2021/07/30 掲載

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

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

  • icon-mail
  • icon-print
  • icon-hatena
  • icon-line
  • icon-close-snsbtns
会員になると、いいね!でマイページに保存できます。
我々は日々、「情報」を得るためにPCやスマートフォンなど、さまざまな情報端末でWebサイトやWebシステムへアクセスしている。アクセスした先にはWebサーバがあり、要求に対する処理を行うことでリクエスト元である端末に情報が届けられている。では、システムにとって最適なWebサーバとは何なのか。ここでは、数あるWebサーバの中でも、長らく不動の1位だったApacheを抜き去った「Nginx(エンジンエックス)」について、基礎からコンテナ活用まで分かりやすく解説していこう。
画像
今もっとも使われる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つの具体的な利用方法を図解します
関連タグ タグをフォローすると最新情報が表示されます
あなたの投稿

    PR

    PR

    PR

処理に失敗しました

人気のタグ

投稿したコメントを
削除しますか?

あなたの投稿コメント編集

機能制限のお知らせ

現在、コメントの違反報告があったため一部機能が利用できなくなっています。

そのため、この機能はご利用いただけません。
詳しくはこちらにお問い合わせください。

通報

このコメントについて、
問題の詳細をお知らせください。

ビジネス+ITルール違反についてはこちらをご覧ください。

通報

報告が完了しました

コメントを投稿することにより自身の基本情報
本メディアサイトに公開されます

必要な会員情報が不足しています。

必要な会員情報をすべてご登録いただくまでは、以下のサービスがご利用いただけません。

  • 記事閲覧数の制限なし

  • [お気に入り]ボタンでの記事取り置き

  • タグフォロー

  • おすすめコンテンツの表示

詳細情報を入力して
会員限定機能を使いこなしましょう!

詳細はこちら 詳細情報の入力へ進む
報告が完了しました

」さんのブロックを解除しますか?

ブロックを解除するとお互いにフォローすることができるようになります。

ブロック

さんはあなたをフォローしたりあなたのコメントにいいねできなくなります。また、さんからの通知は表示されなくなります。

さんをブロックしますか?

ブロック

ブロックが完了しました

ブロック解除

ブロック解除が完了しました

機能制限のお知らせ

現在、コメントの違反報告があったため一部機能が利用できなくなっています。

そのため、この機能はご利用いただけません。
詳しくはこちらにお問い合わせください。

ユーザーをフォローすることにより自身の基本情報
お相手に公開されます