ホームページ  >  記事  >  運用・保守  >  Nginx と Apache の違いは何ですか?

Nginx と Apache の違いは何ですか?

WBOY
WBOY転載
2023-05-15 19:46:045601ブラウズ

Nginx は、Apache と同様、HTTP サーバー ソフトウェアです。どちらも機能実装にモジュール構造設計を採用しています。どちらも、PHP、Perl、Python などの共通言語インターフェイスをサポートし、順方向と逆方向もサポートしています。プロキシ、バーチャルホスト、URL書き換え、圧縮通信、SSL暗号化通信など

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

Nginx と Apache の違いは何ですか?

Apache HTTP サーバーとは何ですか?

Apache HTTP サーバーは、オープンソースのクロスプラットフォーム Web サーバーであり、「httpd」および Apache とも呼ばれます。彼は Apache Software Foundation のブランドとサービスを管理しています。サーバーは、ASF のオープンな開発者コミュニティによって開発および保守されています。 Apache は主に Linux 上で動作し、世界の Web サイトの 46% で稼働しています。これは、LAMP (Linux、Apache、MySQL、PHP) スタックの重要なコンポーネントです。

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

NGINX とは何ですか?読み方は? 「エンジン X」と読みます。2004 年に Igor Sisoev によってリリースされた Web サーバーです。今では単なる Web サーバーではありません。当初、Nginx は主に Apache を補完するものとして使用され、主に静的ファイルを提供するために使用されていましたが、現在では、Web サーバーのタスク全体を処理する完全な Web サーバーに進化しました。 Nginx は、リバース プロキシ、ロード バランサー、メール プロキシ、HTTP キャッシュとしてよく使用されます。 Apache と Nginx はどちらも Linux で最も一般的な Web サーバーです。これらを合わせると、ネットワーク トラフィックの 50% 以上を処理します。

Apache と NGINX は多くの点で共通していますが、多くの点で異なります。それぞれが独自の方法で優れており、独自の目的と計画を持っています。違いを理解し、結論を導くために、以下で詳細なエンドツーエンドの比較を見てみましょう。また、各ポイントの最後には、各比較ポイントの勝者についても記載します。

Nginx と Apache の違いは何ですか?

基本アーキテクチャ

Apache と Nginx に関して言えば、根本的な違いは設計アーキテクチャにあります。これは、接続とトラフィックを実際に処理する方法、およびさまざまなトラフィック状況に応答する方法が異なることを意味します。 1 つはプロセス駆動型のアプローチであり、もう 1 つはイベント駆動型のアーキテクチャです。

Apache

リクエストごとに新しいスレッドを作成する、プロセス駆動型メソッド。 Apache はマルチスレッドのアプローチを採用しています。さまざまな複数の処理モジュールを提供します。これらのプリモジュールは、基本的に 3 種類のリクエスト処理アルゴリズムです。それぞれは、さまざまなサーバーのニーズに応じて使用されます。 MM (Multiple Processing Module) は、さまざまな接続やさまざまな処理アルゴリズムを選択するための柔軟なアーキテクチャを提供します。さらに、Apache 2 のバージョンが異なれば、使用するパレード モジュールも異なります。 3 つの主要な Apache MM は、プロセス (フォーク前) MPM、ワーカー MPM、およびイベント MPM です。デフォルトでは、Apache 2.2 はプリフォーク モード (mpm_prefork) で構成されています。これは一連のプロセスに応答し、各プロセスは一度に 1 つのリクエストを処理できます。つまり、Apache は、各接続リクエストを処理するたびに新しいスレッドを作成します。スレッドは、スケジューラによって独立して管理できるプログラミング命令の最小のシーケンスです。ほとんどの場合、スレッドはプロセスのコンポーネントです。ただし、Apache の基本アーキテクチャではリソースが大量に消費されるため、サーバーの問題 (速度の低下など) が発生する可能性があります。 Nginx と Apache の違いは何ですか?

Nginx

複数のリクエストを 1 つのスレッドで処理するイベント駆動型のアプローチ、Nginx はイベント駆動型のアーキテクチャを使用し、リクエストを非同期に処理します。これは、ノンブロッキングのイベント駆動型接続処理アルゴリズムを使用するように設計されています。したがって、そのプロセスは単一の処理スレッドで数千の接続 (リクエスト) を処理できます。この接続プロセス モジュールにより、Nginx は限られたリソースで迅速かつ広範囲に動作できるようになります。さらに、低電力システムや高負荷で実行されているシステムでも Nginx を使用できます。 Nginx と Apache の違いは何ですか?

勝者は NGiNX です。その構造は軽量で、そのアーキテクチャは Apache よりもはるかに高速です。パフォーマンス Apache と Nginx の観点から見ると、どちらの Web サーバーも静的コンテンツと動的コンテンツの処理方法が異なります。静的コンテンツを扱う場合は Nginx の方が優れていると言われていますが、それが本当かどうか見てみましょう。

静的コンテンツ

Apache

ファイルベースのアプローチを使用して静的コンテンツを提供します。静的コンテンツまたはファイルは通常、サーバー上のディスクに保存されますCSS ファイル、JavaScript ファイル、画像などのファイル。 Apache は、静的コンテンツに対して従来のファイルベースのアプローチを使用します。

Nginx

Nginx は、静的コンテンツの提供に関しては兄貴分です。 Nginx の設計アーキテクチャは負荷をより処理できるため、静的コンテンツの提供がはるかに高速になります。最大 1,000 の同時接続のベンチマークに基づくと、Apache よりも 2.5 倍高速に実行されます。 Nginx は静的リソースを提供するため、PHP はこれを認識する必要はありません。一方、Apache は、これらすべてのリクエストを処理し、高いオーバーヘッドを伴います。これにより、Nginx の効率が向上し、システム リソースへの要求が軽減されます。

この小さな画像は、数秒で処理される静的コンテンツのリクエストを示しています。ここでは Nginx が Apache を明らかに上回っています。

Nginx と Apache の違いは何ですか?

動的コンテンツ

Apache

Apache は、外部に依存することなく、Web サーバー自体で動的コンテンツを処理できます。コンポーネント。したがって、自分で処理できます。 Apache と Nginx のパフォーマンスについての話: 動的コンテンツ処理を考慮すると、Nginx は (優れているとは言えないにしても) ほぼ同等です。以下は、動的コンテンツ リクエストの数の比較です。見た目に違いはありません。

Nginx と Apache の違いは何ですか?

#Nginx

動的コンテンツを処理しません。動的コンテンツについて言えば、Nginx は次のような Web サーバー内の動的コンテンツを処理できません。アパッチのコンテンツ。動的 Web コンテンツを含むすべてのリクエストは、実行のために外部プロセス (PHP-FPM など) に渡されます。 Nginx は、最終コンテンツが返されてクライアントに配信されるのを待ちます。明確なアイデアについては、次の画像を参照してください。

Nginx と Apache の違いは何ですか?

SCGI ハンドラーおよび FastCGI モジュールとともに使用すると、NGINX は動的コンテンツを提供できます。静的: 静的コンテンツに関しては、Nginx が Apache を上回ります。動的: どちらも動的コンテンツの処理に優れています。

オペレーティング システムのサポート

オペレーティング システムのサポートは、特に Apache と Nginx を比較する場合に考慮すべき重要な点となります。しかし、ここでは両者はほぼ同じです。

Apache

Linux や BSD を含む、すべての Unix 系システムをサポートします。 Linux や BSD などのさまざまな Unix 系システム上で実行される MS-WindowsApache を完全にサポートし、Microsoft Windows も完全にサポートします。

Nginx

Unix などのほぼすべてのオペレーティング システムをサポートします。 Windows では部分的にサポートされています。また、いくつかの最新の Unix ベース システムでも実行され、Windows もある程度サポートされていますが、Windows のパフォーマンスは他のプラットフォームほど堅牢ではありません。

ここでの勝者は Apache です。

分散/集中構成

Apache と Nginx は当然のトピックです。それらの構成は互いに異なり、同じように興味深いものになります。どちらの構成がより簡単かつ高速であるかを見てみましょう。

Apache

.htaccess ファイルを使用してディレクトリごとに追加の構成を行うことができます。このアーキテクチャにより、特権のないユーザーは、メイン構成を編集する権限を付与せずに、Web サイトの特定の側面を制御できます。これは大きいですね!

Nginx

追加の構成は許可されませんが、一方で、欠点もあります。追加の構成は提供されません。ただし、パフォーマンスが向上するため、有利に機能します。ディレクトリ構成を許可しないことで、Apache よりも高速にリクエストを処理できます。 .htaccess ファイルを検索したり、ユーザーが作成した要求を解釈したりする必要はありません。

勝者: 構成が懸念される場合は Apache を選択し、構成が懸念される場合は Apache を選択してください。速度がNGinxの場合。

リクエストの説明

Apache と Nginx の議論では、リクエストの解釈方法は比較すべき興味深いトピックです。それらはすべて、まったく異なる方法でリクエストを処理および解釈します。

それぞれの異なるアプローチにより、それぞれがユニークになり、一方が他方よりも少し優れたものになります。調べてみましょう!

Apache

ファイル システムの場所を渡し、リクエストを解釈できるようにします。ファイル システムの場所としての物理リソースとして、より抽象的な評価が必要になる場合があります。リクエストをファイル システムの場所として渡します。

もちろん、Apache は URI の場所を使用しますが、通常はより抽象的なリソースに使用されます。 Apache は、仮想ホストを作成または構成するときに、ドキュメント ルートの下のディレクトリ ブロックを使用します。

ファイル システムの場所に関するこの設定は、.htaccess ファイルを使用して特定のディレクトリ構成をオーバーライドする場合にも見られます。

Nginx と Apache の違いは何ですか?

Nginx

URI 経由でリクエストを解釈し、Web サーバーおよびリバース プロキシ サーバーとして Nginx が作成されます。これらのアーキテクチャ要件のため、Nginx は主に目で動作します。必要に応じてシステムに変換します。構成を指定するメカニズムは提供されません。ファイル システム ディレクトリの場合は、URI 自体を渡します。ファイル システムの場所の代わりにリクエスト (URI) を渡すことで、Nginx を Web サーバーやプロキシ サーバーで簡単に実行できるようになります。これは、レイアウトが異なる要求パターンにどのように応答するかによって簡単に構成されます。 Nginx と Apache の違いは何ですか?

リクエストを処理する準備ができるまでファイル システムをチェックしません。これが、どの形式の .htaccess ファイルも実装しない理由を説明しています。リクエストを URI の場所として解釈するこの設計により、Nginx は Web サーバーとしてだけでなく、プロキシ サーバー、ロード バランサー、HTTP キャッシュとしても簡単に機能することができます。

また、Apache と Nginx の競争では、転送速度 (サーバーからクライアントにデータが送信される速さ) の点で NGINX が再び勝利しました。ほとんどの場合、Nginx は 500/100 のかなりの割合で勝ちます。

Nginx と Apache の違いは何ですか?

勝者: 解釈と応答が速いため、Nginx が勝ったようです。

関数モジュール

両方ともモジュール システムを通じて拡張可能です。しかし、彼らの働き方は異なります。 2 つの Web サーバーの機能モジュール、Apache と Nginx を比較してみましょう。

Apache

Apache サーバーをオン/オフできる動的にロード可能な 60 個の公式モジュール。豊富な機能セットを備えており、60 個の公式モジュールの 1 つをインストールすることでインストールできます。これらの機能を有効にするモジュール。他にも多くの非公式モジュールがインターネット上で簡単に見つかります。

そのモジュール システムにより、ニーズに合わせてモジュールを動的にロードまたはアンロードできます。そのモジュールをオンまたはオフにして、機能を追加または削除し、メイン サーバーに接続できます。

つまり、Apache にはニーズを満たすいくつかの機能モジュールがありますが、その多くは頻繁には使用されません。

Nginx

サードパーティのコア モジュール (動的にロード可能ではありません) 一方、Nginx は選択され、サードパーティのプラグインにコンパイルされます。動的にロードすることはできません。これらのモジュールは便利ですが、使用したい機能のみを含めることで、サーバーから何を取得するかを決定できます。サーバー内で任意のコンポーネントを接続できるため、Apache サーバーよりもはるかに安全であると考えられています。さらに、NGINX は、成功に必要な軽量で高性能な機能を犠牲にすることなく、Web サーバーのすべてのコア機能を提供します。 Apache は Microsoft Word のようなもので、Nginx はメモ帳のようなものです。 Apache には 100 万ものオプションがありますが、必要なのはほんのわずかです。 Nginx はこれらの処理の「いくつか」を実行し、Apache より 50 倍高速に実行します。

勝者: NGiNX – それほど重要ではありませんが、機能とモジュールにより、Apache よりも軽量、スマート、優れた Web サーバーになります。

柔軟性

柔軟性は、Web サーバーにとって最も重要な問題の 1 つです。 Apache と Nginx の柔軟性には興味深い違いがいくつかあります。

Apache

動的モジュールによる Web サーバーのカスタマイズをサポートします。 Web サーバーは、Ride モジュールを通じてカスタマイズできます。 Apache の動的モジュールはロードに最も時間がかかるため、すべての Apache モジュールがこの機能をサポートしています。

Nginx

は、動的モジュールと読み込みをサポートできるほど柔軟性がありません。ただし、NGINX の場合はそうではありません。 2016 年の初めに、NGINX は動的モジュール読み込みのサポートを取得しましたが、以前は NGINX は管理者がモジュールを NGINX バイナリにコンパイルする必要がありました。ほとんどのモジュールはまだ動的読み込みをサポートしていませんが、時間の経過とともにサポートされるようになるでしょう。勝者: Apache – 明らかにここにつながります。

セキュリティ

Apache 対 Nginx セキュリティが再び議論のテーマになっています。どちらの Web サーバーも、C ベースのコード ベースに優れた拡張セキュリティを提供します。

Apache

非常に安全です。 Apache は、サーバー上で実行されているすべての Web サイトが危害やハッカー攻撃から安全であることを保証します。したがって、DDoS 攻撃を処理するための設定ヒントと、HTTP DoS、DDoS、またはブルート フォース攻撃に応答するための mod_evasive モジュールが提供されます。

NGINX

セキュリティを向上させるための最小限のコード。ただし、NGINX のコードベースは桁違いに小さいため、将来を見据えたセキュリティの観点からすると、これは間違いなく大きな利点です。 NGINX には、最近のセキュリティ勧告もリストされています。 Nginx ブログで DDoS 攻撃に対する防御に関する記事を読んでください。勝者: Nginx - より安全であると考えられています

サポート

サポートはすべての顧客が切望しているものです。ユーザーエクスペリエンスが変化したり壊れたりする可能性があります。 Apache と Nginx のサポートを比較すると、大きな違いはないようです。

Apache

コミュニティ サポートは、メーリング リスト、IRC、およびスタック オーバーフローを通じて行われます。商用 Apache サポートは、OpenLogic などの多くのサードパーティ企業から入手できますが、Apache Foundation は公式のリストを管理していません。 Apache サーバーは、すべてのユーザーに強力なサポートを提供するように設計されています。

Nginx

コミュニティ サポートは、メーリング リスト、IRC、Stack Overflow、フォーラムを通じて提供されます。 NGINX の背後にある会社は、負荷分散、メディア ストリーミング、モニタリングに関する一連の追加機能をサポートする NGINX Plus と呼ばれる商用製品を提供しています。 ######勝者:!どちらのサポートもほぼ同じです。どちらの Web サーバーも優れています。

最後に

#Apache と nginx はどちらも他に置き換えることはできませんが、それぞれ長所と短所があります。利点、制限事項、相違点を理解した後は、どの Web サーバーが自分にとって最適であるかがすでにわかっているはずです。

Apache と Nginx に関する記事では、9 ポイント中 5 ポイントが Nginx によって獲得され、2 ポイントは Apache と nginx の間で「同点」でした。したがって、NGINX が Apache よりも優れていることが明確にわかります。

Nginx ではなく Apache を選択するのはどのような場合ですか?

i) Apache.

NGINX は、Apache のような .htaccess ファイルをサポートしません。ただし、Apache を使用すると、特権のないユーザーが Web サイトの特定の重要な側面を制御できるという利点が得られます。

どうやら、ユーザーはメイン構成を編集することは許可されていないようです。システム全体の設定は、.htaccess ファイルを使用してディレクトリごとに上書きできます。最高のパフォーマンスを得るには、これらの .htaccess ディレクティブをメイン構成ファイルに含めます。共有ホスティング環境では、.htaccess 構成により Apache がより適切に動作します。 P.S. 専用ホスティングまたは VPS の場合は、Nginx が最適なオプションのままです。

ii) 機能制限がある場合 = Apache を使用する場合

Nginx には非常に重要なコア モジュールがいくつかあります。ただし、Nginx にはいくつかの機能制限があります。

特定の制限がある場合、または Nginx がサポートしていない追加モジュールを使用する必要がある場合は、代わりに Apache を選択することをお勧めします。

Apache ではなく Nginx を選択するのはどのような場合ですか?

i) 高速な静的コンテンツ処理

Nginx は、特定のディレクトリからの静的ファイルの処理において優れたジョブを実行できます。

さらに、Nginx はそれらを同時に処理できるため、多数の静的コンテンツのリクエストによって上流のサーバー プロセスがブロックされることはありません。これにより、バックエンド サーバーの全体的なパフォーマンスが大幅に向上します。

Nginx は、ユーザーにより良いエクスペリエンスを提供できるよう継続的に努力しています。 2018年には大きな成長を見せました。 Nginx ブログで 2018 年の主な要点をご覧ください。

ii) トラフィックの多い Web サイトに最適

速度と、高負荷時にどれだけのクライアントに対応できるかという点について言えば、Nginx は常に Apache を上回る勝者として輝きます。

これにより、Nginx は大幅に軽量になり、サーバー リソースに最適になります。これが、ほとんどの Web 開発者が Apache よりも Nginx を好む理由です。

特に、今日の電子ストアは、トラフィックの多い Web サイトでの作業方法を知っており、Nginx での作業が得意な Magento 開発者を雇用しています。

つまり、トラフィックが多い Web サイトにサービスを提供する場合、Nginx に勝るものはありません。

または両方を使用する

同時に使用すると、各サーバーの利点を組み合わせて使用​​できます。

Nginx を Apache の前でサーバー プロキシとして使用できます (次の図を参照)。これは、Nginx の高速処理速度と大規模な接続を同時に確立できる機能を利用しています。

Nginx と Apache の違いは何ですか?静的接続の場合、Nginx はクライアントにファイルを迅速に提供します。 Php ファイルなどの動的コンテンツの場合、Nginx リバース プロキシ サーバーはそのリクエストを Apache にプロキシし、Apache はその結果を処理してレンダリングされたページを返すことができます。

Nginx は最終コンテンツをクライアントに配信できます。さらに、クライアント (多数のユーザー) に非常に迅速にサービスを提供する、非常に機能的な Web サーバーを構築できます。

以上がNginx と Apache の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。