サーバー側の対決:ApacheとNGINX

公開: 2020-10-01

Webサーバーはインターネットの中核です。 ApacheやNGINXなどのWebサーバーソフトウェアがなければ、Webは今日見られるものとはまったく異なります。 ただし、互換性はありません。 これらの2つのオプション(ApacheとNGINX)のどちらが最適かを知るには、それらがどのように機能するかを理解する必要があります。

この記事では、Webサーバーとは何か、それらがどのように機能するかについて説明し、ApacheとNGINXの両方を紹介します。 次に、ApacheとNGINXの主な違いを比較し、長所と短所を確認します。

それを手に入れよう!

Webサーバーとは何ですか?

一言で言えば、Webサーバーは、ApacheやNGINXなどのサーバーソフトウェアの実行専用のコンピューターです。 Webサーバ両方のストアサイトのファイルとそれらにアクセスするための着信要求を処理することができます。

この最後のタスクを担当するのはWebサーバーソフトウェアであり、これは重要な責任です。 人気のあるウェブサイトの場合、使用するソフトウェアは短い時間枠で大量のリクエストを処理する必要があるかもしれないので、それはタスク次第でなければなりません。 NGINXとApacheはどちらも、多数のリクエストをスケーリングして処理することができます。 ただし、両方のサーバーオプションが機能する方法は、コアレベルでは異なります。

Webサーバーソフトウェアは、他のいくつかのコンポーネントと連携して、最新のWebサイトやアプリケーションにサービスを提供します。 たとえば、サーバーにWordPressをセットアップするには、次のコンポーネントが必要です。

  • HTTPSをサポートするWebサーバー:これは、Apache、NGINX、またはその他のいくつかのオプションです。
  • PHP: WordPressはPHP言語に基づいて構築されているため、コンテンツ管理システム(CMS)を実行するために必要です。
  • データベースソフトウェア:これはMySQLまたはMariaDBです。

この記事では、Webサーバーソフトウェアのみに焦点を当てます。 ただし、ソフトウェアは真空状態では機能しないことを理解することが重要です。 いくつかのケースでは、Apacheやnginxのようにも設定したWebサーバは、一緒に仕事をすることができます。 Webサイトがそれを行う1つの方法は、メインサーバーソフトウェアとしてApacheを使用しながら、リバースプロキシとして機能するようにNGINXを構成することです。 自由に使えるアプリケーションは明らかに多様で豊富です。

Apacheの紹介

Apacheホームページ。

長い間、ApacheはほとんどのサイトのデフォルトのWebサーバーオプションでした。 このソフトウェアは、RobertMcCoolがApacheHTTPServerを導入した1995年から存在しています。 数年後、Apache Software Foundationがメンテナンスを引き継ぎ、Apacheはオープンソースソフトウェアになりました。

Apacheは、いくつかの主要なLinuxディストリビューションと一緒にインストールされたため、非常に人気がありました。 Webサーバーに関して言えば、Linuxの普及により、Apacheは何年もの間事実上の選択になりました。

Apacheの名前はLinuxに深く根付いているため、オペレーティングシステム(OS)はサーバープロセス(Apache自体にあるもの)にhttpdコマンドを使用します。 ただし、Webサーバーに関しては、Apacheだけが有名ではありません。

NGINXの紹介

NGINXホームページ。

NGINXは、「C10K問題」として知られている問題を処理できるようにIgorSysoevによって設計されました。 これは、最大10Kの同時接続を処理できるようにネットワークを最適化することを扱います。 つまり、NGINXは最大のスケーラビリティを念頭に置いて作成されました。

オープンソースソフトウェアは2004年にリリースされ、現在2種類のライセンスが利用可能です。 オープンソースバージョンと、プロフェッショナルサポートやその他の機能を含むエンタープライズソリューションであるNGINXPlusがあります。

初期の頃、ほとんどのWebサイトは、Apacheと比較してインストールが難しいと認識されていたため、静的リクエストのみを処理するためにNGINXを使用していました。 しかし、NGINXの市場シェアは何年にもわたって着実に成長しています。

いくつかの調査によると、NGINXは世界で最も人気のあるWebサーバーソフトウェアとしてApacheに合格しています。 他の数字はそれをApacheのすぐ後に置いています:

Webサーバーソフトウェアの人気に関する統計。

画像ソース:W3Techs。

本当のことは、NGINXは、Web上で最も人気のあるWebサイトの中でApacheよりもはるかに人気があるということです。 これは、大量のトラフィックを取得するサイトにとって重要なスケーラビリティに関して、NGINXが否定できない優位性を持っているためです。

また、NGINXは、Webサーバーとして使用したくない場合は、リバースプロキシまたはロードバランサーとして「二重の義務」を引き出すことができます。 言い換えれば、Apacheよりもはるかに多くの役割を果たすことができます。

ただし、サーバーの変更を検討している場合は、NGINXをデフォルトの選択肢にする必要があると言っているわけではありません。 次のいくつかのセクションでは、各ソフトウェアの独自性を分析します。

ApacheとNGINX:3つの主な違い

どのサーバーソリューションが最適なオプションであるかを説明する前に、それらの違いを分析する必要があります。 まず、ApacheとNGINXに関するリクエスト処理について説明しましょう。

1.リクエスト管理

注意してください-これは物事がもう少し技術的になるところです。 Apacheは、マルチプロセッシングモジュール(MPM)と呼ばれるものを使用して接続を処理します。 このソフトウェアを使用すると、次の3種類のMPMから選択できます。

  1. mpm-preforkこのモジュールは、各リクエストを処理するためのシングルスレッドプロセスを作成します。 次に、各「子」は1つの接続のみを処理できます。
  2. mpm_workerこのモジュールはマルチスレッドプロセスを起動でき、各スレッドは1つの接続を管理できます。
  3. mpm_eventほとんどの場合、このモジュールはmpm_workerと同じように機能しますが、接続を維持するように最適化されています。

Apacheのユニークな側面の1つは、使用するモジュールを選択し、必要に応じてそれらを交換できることです。 デフォルトでは、Apacheはmpm-preforkモジュールを使用します。これは、同時接続の数が少ない場合に最適です。 スケーリングに関してはmpm_workerモジュールの方が優れていますが、追加のサーバーリソースが必要です。

対照的に、NGINXは「イベントドリブン」アプローチと呼ばれるものを使用します。 ソフトウェアはマルチスレッドプロセスを使用し、各スレッドは複数の接続を処理できます。

さらに、NGINXは着信リクエストを非同期で処理します。 一言で言えば、これはNGINXがより少ないサーバーリソースでより多くのリクエストを管理できることを意味し、この特定の側面でより効率的になります。

2.サーバー構成

Apacheは、 .htaccessファイルを使用して、着信要求の処理方法に関する特定のルールを設定します。 これらのファイルには、リダイレクトルールからメモリ制限などすべてが含まれています。

Apacheを使用すると、サーバーツリーのすべてのディレクトリに個別の.htaccessファイルを設定できます。 例を挙げると、共有サーバーをセットアップする場合、そのサーバーでホストされている各Webサイトが独自の.htaccessファイルをセットアップできるようにすることができます。

この高レベルの柔軟性の欠点は、リクエストパスに沿って遭遇するすべての.htaccessファイルを個別に解釈する必要があることです。 これは、リクエストの実行に時間がかかる可能性があることを意味します。

NGINXは、構成に関して同じレベルの柔軟性を提供しません。 直接レベルの構成ファイルの代わりに、全体を管理する1つのメインファイルがあります。

3.モジュール

モジュールは、選択したサーバーソフトウェアと一緒に使用して、デフォルトの機能を拡張できるアドオンです。 Apacheの時代と人気を考えると、モジュールの選択に関しては、ApacheがNGINXよりも優れていることは驚くべきことではありません。

Apacheはより多くのモジュールを提供するだけでなく、それらの使用方法に関するドキュメントやチュートリアルを見つけやすくなる傾向があります。 さらに、Apacheを使用すると、モジュールを自由にインストール、有効化、および無効化できるため、高度な柔軟性が得られます。

NGINXは同じ利点を提供しません。 モジュールを使用するには、モジュールをNGINXコアにコンパイルする必要があります。 さらに、コンパイル後にモジュールを無効にすることはできないため、オプションの交換がはるかに困難になります。

NGINX Plusには、モジュールを自由に無効または有効にできる動的モジュール機能が含まれていることに注意してください。 ただし、Plusを使用する場合でも、使用する前に、これらのモジュールをNGINXコアでコンパイルする必要があります。

NGINXのモジュールライブラリとドキュメントは着実なペースで成長していますが、ボリュームの点ではまだApacheに匹敵することはできません。 ただし、NGINXがどのように市場シェアを拡大​​し続けているかを考えると、これはおそらく近い将来に変わるでしょう。

ApacheとNGINXの長所と短所

これで、ApacheとNGINXの主な違いを理解できました。 ここで、各ソフトウェアの長所と短所の簡単な内訳を示しましょう。

Apache

まず、Apacheを使用する主な利点について説明しましょう。

  • セットアップと構成が簡単になる場合があります
  • .htaccessファイルのおかげで、サーバーの構成をよりきめ細かく制御できます
  • モジュールの選択が優れており、モジュールを自由に有効または無効にできます
  • さまざまなモジュールを使用してリクエストを処理する方法を決定できます

ApacheとNGINXを使用することの主な欠点は、後者の方が単純に拡張性が高いことです。 あなたがまだあなたのウェブサイトの成長段階にあるならば、Apacheはトラフィックを処理するのに十分すぎるはずです。

ただし、サイトが劇的に成功した場合は、ある時点でサーバースタックの更新を検討する必要があります。 これは、NGINXに切り替えるか、ApacheWebサーバーのリバースプロキシとして使用することを意味する場合があります。

NGINX

NGINXには、Apacheに関して、パフォーマンスとスケーラビリティという2つの明確な利点があります。 具体的には、次の点ではNGINXの方が優れています。

  • 大量の同時リクエストの処理
  • より少ないハードウェアリソースでより良いパフォーマンスを得る
  • 静的コンテンツをより速く提供する

この最後の部分は、非常に多くの人々がリバースプロキシソリューションとしてNGINXを使用することを選択する理由です。 パフォーマンスに関連するすべての利点にもかかわらず、NGINXには欠陥がないわけではありません。

単一の構成ファイルがあるとリクエスト時間が短縮されますが、NGINXはApacheよりも柔軟性が低いことも意味します。 これはモジュールにも当てはまります。オープンソースバージョンのNGINXでは、モジュールを使用するためにモジュールをコンパイルする必要があり、無効にすることはできません。 実際には、これは、必要に応じて機能するようにNGINXを設定することは、Apacheを使用するよりもはるかに複雑になる可能性があることを意味します。

NGINXを使用する主な理由は、パフォーマンスが主な関心事であるかどうかです。 ある時点で、人気のあるWebサイトは、ダウンタイムや長い読み込み時間などを発生させずに大量のトラフィックを処理するために、大きな問題を解決する必要があります。 また、NGINXを使用すると、より少ないハードウェアリソースでより良いパフォーマンス結果を得ることができるため、より費用効果の高いオプションになる可能性があります。

結論

サーバーまたはサーバーソフトウェアの切り替えは、常に大きな決断です。 そのため、理想的には、長期的に使用するサーバーソリューションを使用することをお勧めします。

ApacheとNGINXのどちらを選択するかは、見た目ほど明確ではありません。 多くの場合、Webホストが使用するソフトウェアを決定するため、決定はあなた次第ではありません。 実用的なレベルでは、調査を行い、Webホストがコミットする前にどのオプションを使用するかを見つける必要があります。

ApacheとNGINXのどちらを選択するかについて質問がありますか? 以下のコメントセクションでそれらについて話しましょう!

ProStockStudio / shutterstock.comによる記事のサムネイル画像