GNU/Linux >> Linux の 問題 >  >> Linux

ApacheとNginx:どちらのWebサーバーを選択する必要があるか

ApachevsNginxは当然のトピックです。どのサーバーが自分に適したソリューションであるかについて混乱している場合は、この記事で答えを見つけましょう。

ApacheとNginxは、今日のインターネットを強化する最も人気のあるウェブサーバーです。一緒に、彼らはインターネット上のトラフィックの50%以上にサービスを提供する責任があります。しかし、Apacheは近年、Nginxを支持して減少しています。大まかに言えば、どちらのプラットフォームも同じコア機能を実行します。つまり、Webコンテンツをホストして提供します。どちらも特定のコンピューティング要件に対応する独自の機能を備えているため、さまざまなシナリオで一方が他方よりも適しています。

Apache:機能豊富なWebサーバー

Apacheは、モジュール式のプロセス駆動型Webサーバーアプリケーションであり、同時接続ごとに新しいスレッドを作成します。 それは多くの機能をサポートしています。それらの多くは個別のモジュールとしてコンパイルされ、そのコア機能を拡張します。 Apacheのモジュールは、サーバー側のプログラミング言語のサポートから認証メカニズムまで、あらゆるものを提供できます。

ApacheWebサーバーはモジュラーアプリケーションです ここで、管理者は必要な機能を選択し、必要な特定の機能に応じてさまざまなモジュールをインストールできます。すべてのモジュールは、動的共有オブジェクトとしてコンパイルできます。 (DSO)メインのApacheファイルとは別に存在します。 DSOアプローチは、サーバー構成からモジュールを追加/削除/更新するタスクを非常に簡単にするため、強くお勧めします。

Apacheのアーキテクチャのもう1つの重要な機能は、フィルターです 、モジュールが他のモジュールによって作成されたコンテンツと対話できるようにします。この相互作用には、暗号化、ウイルススキャン、静的コンテンツと動的コンテンツの両方の圧縮が含まれます。

Apacheは、その柔軟性、パワー、および広範なサポートのために、管理者によって選択されることがよくあります。

Nginx:パフォーマンスとスケーラビリティを考慮して設計

Nginxは、クライアントへの10,000の同時クライアント接続を処理するC10Kと呼ばれる問題への回答として、IgorSysoevという名前のロシアのソフトウェア開発者によって作成されました。これは、ApacheWebサーバーのパフォーマンス制限に対処するために特別に作成されました。サーバーは、2002年にウェブサイトrambler.ruのスケーリングツールとして最初に作成されました。

NGINXは、高性能の非同期Webサーバーです。イベント駆動型アーキテクチャを使用して、大量の接続を処理します。 この記事で説明するさまざまな理由により、現在はApacheWebサーバーよりも人気があります。

Nginxは主に静的ファイルを提供するために使用されていましたが、今日では、サーバータスクの全範囲を処理する完全なWebサーバーとして進化しています。現在、Nginxは、リバースプロキシ、ロードバランサー、およびHTTPキャッシングとしても使用されています。一部のユースケースでは、NginxはWebアクセラレータまたはSSL/TLSターミネータとしても機能します。

Nginxは、多くの場合、リソース効率と負荷時の応答性のために管理者によって選択されます。

ApacheとNginx:詳細な比較

アーキテクチャ

ApacheとNginxの場合、それらが動作する両方のWebサーバーのアーキテクチャ間にコアの違いがあります。

何よりも、ApacheとNginxの主な違いは、クライアントリクエストの処理方法です。 Apacheはプロセス駆動型のアプローチを使用し、リクエストごとに新しいスレッドを作成します。一方、NGINXはイベント駆動型アーキテクチャを使用して、1つのスレッド内で複数のリクエストを処理します。

Apacheでは、単一のスレッドは1つの接続にのみ関連付けられますが、Nginxの単一のスレッドは複数の接続を処理できます。すべてのプロセスは、他の接続とともにイベントループに入れられ、非同期で管理されます。このプロセスはより少ないメモリを消費するため、パフォーマンスが向上します。

さらに、Nginxのメモリ消費量が少ないため、ホストサーバーに過負荷をかけることなく、より多くの接続を同時に処理できる傾向があります。 Apacheが大量のリクエストに直面した場合、システムメモリをすべて消費し、データをスワップに保存する必要があり、パフォーマンスが大幅に低下する可能性があります。

パフォーマンス:静的/動的コンテンツ

Webサーバーのパフォーマンスは、主に2つのパラメーター、つまり静的コンテンツと動的コンテンツを処理する機能によって判断されます。

静的ファイルは処理を必要としないため、これはサーバーの応答時間を測定するのに役立ちます。では、各サーバーはどのくらいの速さで小さな静的ファイルを配信できますか?静的コンテンツに関しては、ファイルをクライアントに直接かつ迅速に提供できるため、ここでNginxが優れています。 最大1,000の同時接続を実行して実行されたベンチマークテストによると、NginxはApacheの2.5倍の速度で実行されます。 同時に、RAM消費量は少なくなります。負荷を処理するために、Nginxは5〜6%少ないシステムメモリを使用しました。違いは主にサーバーアーキテクチャにあります。

動的コンテンツを表示するためのテスト結果では、ApacheとNginxの両方のパフォーマンスがまったく同じであることが明らかになりました。

Nginxには、動的コンテンツをネイティブに処理する機能はありません。動的コンテンツのネイティブ処理用には設計されていません。 Nginxは、PHPやその他の動的コンテンツリクエストを処理するために外部プロセッサに渡す必要があります。これは、特に許可する接続の数を予測しようとする場合、状況を少し複雑にする可能性があります。

Ngnixとは異なり、ApacheはPHPなどの言語のプロセッサを各ワーカーインスタンスに埋め込むことで動的コンテンツを処理できます。これにより、外部コンポーネントに依存することなく、Webサーバー自体の中で動的コンテンツを実行できます。

カスタマイズ

Apacheは動的にロードされたモジュールを備えています それらが必要なときはいつでも利用できます。サーバーは、公式およびサードパーティの両方の多くの異なるモジュールをサポートします。これにより、Apacheは、ユーザーがニーズに合わせて調整できる非常にカスタマイズ可能なプラットフォームになります。モジュールは、URLの書き換え、クライアントの認証、ロギング、キャッシング、サーバーの強化、圧縮、暗号化などに使用できます。動的モジュールは、多くの追加作業なしでコア機能を大幅に拡張できます。

Nginxモジュールはコアに統合する必要があり、動的にロードすることはできません。非標準モジュールを含めるには、ユーザーはソースからサーバーをコンパイルする必要があります。

Nginx Webサーバーにこの機能がないため、この点でApacheがより柔軟になります。

構成

メインの設定ファイルに加えて、 Apacheでは、.htaccessを介してディレクトリごとに追加の設定を行うことができます ファイル。 .htaccessで行われた変更 ファイルはすぐにシステムに適用されます。これらのファイルには、リダイレクトルールからメモリ制限などすべてが含まれており、Webサーバーの分散構成を効果的に行うことができます。さらに、このアーキテクチャにより、非特権ユーザーは、メイン構成を編集する権限を付与せずに、Webサイトの特定の側面を制御できます。

ただし、この柔軟性にはパフォーマンスが犠牲になります。毎回.htaccess ファイルが有効になっている場合、Apacheは、要求されたURLまたはファイルからサーバーのルートディレクトリまでのすべての上位レベルを経由してディレクトリツリー全体をトラバースし、要求ごとにそれらをロードする必要があります。

Nginxでは追加の構成は許可されていません。 その構成は一元化されています。プロセス全体を管理する単一のファイルがあるため、柔軟性は大幅に低下しますが、この点ではるかに高速になります。 Nginxの中央構成は、Apacheで使用される概念よりも柔軟性がありませんが、セキュリティ上の明らかな利点があります。Webサーバーの構成の変更は、root権限を付与されたユーザーのみが行うことができます。

Nginxにはディレクトリレベルの構成がないため、ユーザーはメインの構成ファイルにディレクティブを書き込んですべての構成変更を実行します。

サポート

ApacheとNginxは、どちらも非常によく文書化されたプラットフォームです。管理者が問題に遭遇したり、ドキュメント内に回答が見つからなかった質問をしたりする可能性はほとんどありません。

  • ApacheHTTPサーバーのドキュメント
  • Nginxドキュメント

OSのサポートに関しては、ApacheはLinuxやUNIXなどのすべてのオペレーティングシステムで動作し、MicrosoftWindowsを完全にサポートしています。 Nginxはいくつかの最新のUnixライクなシステムでも動作し、Windowsをサポートしていますが、WindowsでのパフォーマンスはUNIXプラットフォームでのパフォーマンスほど安定していません。したがって、Microsoft Windowsで機能豊富なオープンソースWebサーバーを実行する場合は、Apacheが実際に唯一の本番環境に対応したオプションです。

ApacheとNginxを一緒に使用する

ただし、ApacheとNginxを比較する際に留意すべきことの1つは、それが常にどちらかまたは両方の決定である必要はないということです。多くの管理者は、それぞれの長所を活用するハイブリッドソリューションで2つを組み合わせています。

ApacheとNginxを並べて使用して、ワークロードが最適化されたサーバーを作成できます。 Apacheの前でNginxをサーバープロキシとして使用できます。これは、Nginxの処理速度と大量のトラフィックを処理する機能を活用します。 Nginxは、動的コンテンツをApacheに転送しながら、静的コンテンツを処理して提供します(下の画像を参照)。

Nginxは、静的ファイルの提供、コンテンツのキャッシュ、低速のHTTP接続のオフロードなど、HTTP関連の手間のかかる作業を実行します。これにより、Apacheサーバーは安全で安全な環境でアプリケーションコードを実行できます。

結論

Apache対Nginxコンテストでは、サーバーまたはサーバーソフトウェアの切り替えに関して決定が難しい場合があります。どのサーバーが最適かを判断することは、主に特定の要件を評価し、最適なオプションを決定する機能です。 ApacheとNginxはどちらも、最新のWeb需要のニーズを満たすために、さまざまなワークロードを処理できるオープンソースの高性能Webサーバーです。

多くのWebサーバー機能が必要ない場合は、Nginxが最適です。さらに、速度とパフォーマンスに関しては、Nginxも明らかに勝者です。トラフィックの多いWebサイトに最適です。

Nginxは、多くの面で機能豊富なApacheと競合することはできませんが、非同期ステータスとシングルスレッドの超高速アーキテクチャにより、Apacheよりも賢明な選択になります。

一方、他のシナリオでは、Apacheが優先されるWebサーバーである可能性があります。 Apacheは共有ホスティング環境に適していて、サーバー側の変更を容易にするコントロールパネルを提供できます。

したがって、ApacheとNginxのどちらかを選択する前に、要件を注意深く分析する必要があります。要件は、Webサーバーに提供させる必要があります。


Linux
  1. ApacheWebサーバーを構成する方法

  2. ApacheWebサーバーのキープアライブのチューニング

  3. LinuxにNginxWebサーバーをインストールする方法

  1. ApacheとNginx-詳細な比較

  2. LAMPとLEMP–WebサーバーにApacheまたはnginxを選択するためのヒント

  3. Pop!_OS vs Ubuntu Linux:どちらを選ぶべきか?これが理由です

  1. Apacheとは何ですか? ApacheWebサーバーの詳細な概要

  2. CentOSとUbuntu–Webサーバーにどちらを選択するか

  3. NGINXとApache–2022年に最適なWeb​​サーバーを選択