- 会員限定
- 2021/07/30 掲載
NginxとApacheをわかりやすく比較、Nginxが「絶対王者」のApacheを超えたワケ
連載:サーバ自動化の勘所
Nginxとは何か?
2021年6月時点でのWebサーバソフトウェアのシェア(出典:W3Techs.com)を見ると、Nginxはこれまで長く「絶対王者」として君臨していたApacheを抜き、1位となっている。NginxがなぜApache越えを果たすことができたのか。そこにはNginxの機能や特徴に理由がある。
Apacheと何が違うのか
NginxとApacheの違いについて、それぞれの特徴を一言で表すと以下のような言い方ができる。Apache:オールマイティータイプのWebサーバ
Apacheは、すべての動作を平均的にこなすことができる、オールマイティーなWebサーバといえる。
Nginxは「静的コンテンツの表示」や「リバースプロキシ」、「ロードバランサー」といったWebサーバとしての基本的な動作を得意としており、その得意な動作に特化したWebサーバとなっている。逆をいうと、それ以外(PHPコンテンツの動作など)は苦手ということになる。
また、NginxはApacheに比べ、サーバのメモリ消費量を抑えることができる特徴がある。これは、NginxとApacheのプロセスの仕組みの違いから読み解くことができる。
Nginxはシングルスレッドのプロセスで、たくさんのリクエストを並列で処理するアーキテクチャーとなっている一方、Apacheは基本的にマルチプロセスとなっており、1リクエストに対して1プロセスで処理を行う。Apacheは同時接続のリクエストが増えれば増えるほどプロセスが増加し、サーバのメモリを消費してしまい、やがてメモリ使用に限界を迎え、サーバがパンクする。これが冒頭で触れたC10K問題である。
そのため、Nginxは得意とする処理に限り、Apacheと比較してメモリ消費量を抑えることができるうえ、大量の同時接続処理を早く処理することができる。すなわち、先に結論をまとめると以下ということになる。
比較項目 | Nginx | Apache |
静的コンテンツ処理 | ◎ | ◯ |
動的コンテンツ処理 | × | ◯ |
並列処理性能 | ◎ | △ |
低リソース消費 | ◎ | × |
コスト(イニシャル/ランニング) | ◯ | △ |
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つの活用例
関連コンテンツ
PR
PR
PR