NginxとApache:どちらが最適なWeb​​サーバーですか?

公開: 2021-12-30

サーバーソフトウェアにはさまざまな種類がありますが、多くの場合、競合他社をNginxとApacheに絞り込みます。 これは、どちらも多くの異なるサーバー構成で最高のパフォーマンスを提供し、特定のアプリケーションに他よりも適しているためです。

それでも、これらのどれがニーズに適しているかを検討する必要があります。 オペレーティングシステム(OS)のサポート、セキュリティ、ドキュメント、(もちろん)パフォーマンスなど、調査すべきいくつかの異なるカテゴリがあります。

この投稿では、さまざまな分野でNginxとApacheを比較します。 最後に、調査結果を要約し、適切なオプションを選択するために必要な情報を提供します。

NginxとApacheの紹介

各サーバータイプの詳細に入る前に、NginxとApacheの両方の概要を説明しましょう。 次のセクションに進むと、両方のユースケースのいくつかと、それらが「実際に」どこで見られるかについて学習します。

#Nginxと#Apache:どちらがあなたに適したWebサーバーですか?
クリックしてツイート

Nginx

Nginxのロゴ。

Apacheと比較すると、Nginx( 「エンジンX」と発音)は、サーバーサイドテクノロジーの世界では比較的初心者です。 ただし、開発チームは、Apacheシステムの制限を拡張するタスクを引き受けました。

これは、多くのユーザーがその安定性とスケーラビリティについて検討しているオープンソースソリューションです。 これは(部分的に)イベント駆動型アーキテクチャに帰着しますが、その詳細は後で説明します。 実際、最初のNginxリリースの目標の一部は、一度に10,000の接続を処理できるようにすることでした。 これは、当時急速に拡大していたWebのために、2004年に必要だったものです。

全体として、システム管理者やNginxのようなサイト所有者は、パフォーマンスが高く、静的ファイルでうまく機能し、ロードバランサーと「リバースプロキシ」の機能を実行するためです。 これらはすべて、稼働時間、速度、およびセキュリティに関連しています。

Apache

ApacheHTTPSサーバーのロゴ。

Apacheは、Webサーバーテクノロジの「老人」です。 Web自体とほぼ同じくらい古いものです。1995年以降、Apacheは、数百万とまではいかなくても数千のサーバーの中核となるソフトウェアになっています。

長い間、Apacheは「システム管理者」の間で支配的なテクノロジーでした。 これには多くの理由があります。パフォーマンスに関連するものもあれば、習慣を強制するものもあります。 とにかく、Apacheサーバーは、構成が重要な場合に多くの用途があります。

ApacheはすべてのLinuxディストリビューションにプリインストールされたソフトウェアであるため、そのOSの頼りになるソリューションです。 ただし、Nginxとは異なるアーキテクチャを使用しているにもかかわらず、パワー、スケーラビリティ、および素晴らしいドキュメントを提供します。

多くのシステム管理者は、Apacheのカスタマイズ可能な性質や、さまざまなモジュールをロードしてサーバーを独自のものにする方法も気に入っています。

NginxとApacheの一般的なユースケース

ウェブサイトの提供に関しては、Apacheは「あらゆる取引のジャック」であると言っても過言ではありません。 しかし、これは混合された祝福です。 はい、ApacheサーバーはNginxが実行できるほとんどすべてのことを実行できますが、パフォーマンスの低いコードが犠牲になります。 ここでは年齢が要因です。

Apacheは、Webサーバー用のより高度なアプリケーションがいくつか登場する前に到着したため、コードベースは最新のWebサイトにサービスを提供するために必要なことを実行できませんでした。 これらの問題は必ずしも懸念の原因ではありませが、Nginxなどのソリューションは最新のWebを念頭に置いて機能します。

そのため、Apacheは、共有ホスティングなどのアプリケーションの構成が簡単なサーバーとして優れていることがわかります。 その統合により、Linux、Apache、MySQL、およびPHP(LAMP)スタックの一部として、ローカル開発サーバーソフトウェアとして使用されることもわかります。

LAMPスタックのすべての部分(Linux、Apache、MySQL、およびPHP)のロゴ。

対照的に、Nginxのソフトウェアベースはより成熟しており、Apacheと比較して合理化が進んでいます。 安定性とセキュリティが重要で基本的な要素である場合に適しています。 Nginxサーバーは他のタイプほど構成可能ではないことがわかります。これは、そのコアへのアクセスが少なくなることを意味します。

さらに、Apacheと同じようにモジュール化されていないため、サーバーのカスタマイズを実行する必要がある状況にはあまり適していません。

NginxとApache:各サーバータイプの人気度

長い間、サーバーソフトウェアは1頭の競馬に似ていました。 Apacheは何年にもわたって支配的な勢力として運営されており、依然として大きな市場シェアを保持しています。 このため、一流のドキュメントに加えて、Apacheサーバーの多くの統合とサポートがあります。

これは、Apacheを選択するさらなる理由として機能し、Apacheの継続的な使用に貢献します。 ただし、Nginxは独自の巨大な市場シェアを持つサーバーソフトウェアです。 Nginxの使用量は時間の経過とともにゆっくりと増加し、市場で最も支配的なWebサーバーテクノロジーになりましたが、それほどではありません。

将来的には、Nginxはシステム管理者がWebサーバーで必要とする多くのものを提供するため、Apacheの使用は時間の経過とともに少なくなることをお勧めします。 ただし、LiteSpeedWebサーバーとCloudflareサーバーは間もなく登場し、ユーザーベースが拡大し、強力な支援を受けています。 数年以内に、この比較により、Nginxをこれらの若い新興企業の1つと比較できるようになります。

NginxとApache:機能の技術的な内訳

次のいくつかのセクションでは、NginxとApacheの技術的な側面について説明します。 すべてを網羅することはできませんが、主要な分野に十分な時間を与えます。 いずれにせよ、これらは両方のサーバータイプのコア要素を表しているため、適切なソフトウェアを選択する際には十分な余裕があります。

1.接続とリクエストの処理

これはサーバーの「コア通貨」であるため、サーバーが接続を処理する方法を知ることは非常に重要です。 議論の余地はありますが、人々がNginxとApacheの相対的なメリットについて議論しようとすると、接続処理が認識に大きな役割を果たします。

Nginx

Nginxは「非同期」および「イベント駆動型」です。つまり、一度に複数のリクエストを処理し、利用可能なリソースがあるときにそれらを処理できます。 着信接続を処理するために「ワーカープロセス」を生成します。着信接続は、一度に数千を想定しています。 これらは、サーバーの残りの部分の「水運搬人」です。

たとえば、各ワーカープロセスは、プロセスイベントと接続をリッスンし、それらを連続ループに追加します。 そこから、サーバーは各イベントを処理し、終了時に削除できます。 Nginxサーバーのフローは固有のスケーラビリティを提供し、非同期のノンブロッキングアーキテクチャもそれを提供します。

Apache

対照的に、Apacheは、多数のマルチプロセッシングモジュール(MPM)を介して一度に1つずつイベントを処理します。 システム管理者は、タスクに最適な接続アーキテクチャを選択しますが、そのうちのいくつかがあります。

mpm_preforkモジュールは一般的なものです。 これにより、イベントごとに子プロセスが生成され、一度に1つの接続のみが処理されます。 プロセスの数がリクエストの数よりも多い場合、パフォーマンスに関してNginxとApacheの違いを区別するのに苦労します。

ただし、このような状況はまれであり、Apacheサーバーは多くの場合プロセスよりも多くのリクエストを認識します。 さらに、このMPMは、メモリ使用量のために適切に拡張できません。

PHPを使用している場合、 mpm_preforkmod_phpインタープリターモジュールを使用する唯一の安全な方法です。 欠点はありますが、これはWordPress開発者がApacheサーバーにデプロイする必要がある場合に選択するMPMになります。

また、 mpm_event mpm_workerも表示されます。 これらは、スレッドのコレクションごとに複数のプロセスを生成できるため、同様の操作を実行し、拡張性が向上します。

このMPMのバッチは、場合によってはパフォーマンスの欠点があるにもかかわらず、Apacheがいかに柔軟であるかを示しています。

静的コンテンツと動的コンテンツのリクエスト処理

先に進む前に、各サーバーソフトウェアの静的コンテンツと動的コンテンツについて説明する必要があります。 Nginxは動的コンテンツを処理できないため、懸念が生じる可能性があることをお読みください。 実際、Nginxはこのタイプのコンテンツをネイティブな方法で処理しません。 代わりに、それを外部プロセッサ(キャッシュなど)に送信し、コンテンツを移動する前に、それが戻るのを待ちます。

開発のために、システム管理者はこのためにMemcachedなどのソリューションをセットアップします。 このアプローチには、つまりパフォーマンスにマイナス面があります。 ただし、チェーンの各部分のパフォーマンスオーバーヘッドの利点は、これを打ち消します。 Nginxはこれらのリクエストの処理について心配する必要がないため、より効率的に責任範囲に集中できます。

ApacheのMPMシステムを使用すると、他のモジュールを必要とせずに、静的コンテンツと動的コンテンツの両方を処理できます。 動的コンテンツの場合、Apacheは各ワーカーに言語プロセッサーを組み込みます。 これは、うまく機能する単純なアプローチです。 変更が必要な場合は、モジュールを交換することもできます。

2.サーバーの構成

NginxとApacheの明らかな違いの1つは、各サーバーの構成方法です。 Nginxは一元化されたアプローチを使用します。つまり、ユーザーは1つのメインファイルの外部でサーバーを構成する方法がありません。 これはネガティブに思えますが、多くの利点があります。

  • サーバー管理者は、サーバー全体へのアクセスを強化するグローバルセキュリティを担当します。
  • 集中型サーバーは、他のタイプよりも優れたパフォーマンスを発揮します。 これは、Nginxが各ディレクトリの構成ファイルをチェックするリクエストを処理する必要がないためです。
  • 複数の領域からのサーバーのオーバーライドがないため、ここではノックオン効果があり、リクエスト時間をさらに短縮できます。

素人がApacheサーバーを使用していることを知る1つの方法は、 .htaccessファイルの存在です。 これらは、サーバー上のほぼどこにでも追加できる構成ファイルです。 Apacheは、リクエストが行われると、パスの各要素で.htaccessファイルをチェックします。

いくつかの書き換えルールを示す.htaccessファイル-NginxとApacheの比較

これは、サーバーの自分の部分をパーソナライズしたいが、ディレクティブの1つがパフォーマンスまたはセキュリティの問題を引き起こす場合に災害を引き起こす可能性があるユーザーにとっては素晴らしいことです。 この分散型アプローチは、Apacheが共有ホスティングで使用される理由の1つです。 また、WordPressなどのコンテンツ管理システム(CMS)がApacheサーバーで優れたパフォーマンスを提供する理由でもあります。

3.解釈を要求する

明らかではないように見えるNginxとApacheの大きな違いの1つは、リクエストの解釈方法です。 一言で言えば:

  • Nginxは、コンポーネントごとにURI(Uniform Resource Identifier)を使用してリクエストを解釈し、マッピングします。
  • ApacheはURIを使用してリクエストを解釈することもできますが、ファイルベースのパス構造を確認するのが一般的です。

Apacheは何よりもまずWebサーバーであるため、 <Directory><Files> 、または<Location>ブロックを使用してリソースを定義します。 ここでの重要な概念は、Apacheが「見る」ものはすべてWebサーバーに関連しているため、リソースパス内にあいまいさがないということです。 ドキュメントツリーについて考えてみてください。これが、Apacheがサーバーファイルシステムを「視覚化」する方法です。

特定のディレクトリのファイルシステム保護を示すApache構成ファイル-NginxとApacheの比較

対照的に、Nginxには、ロードバランサー、プロキシサーバー、Webサーバーなどの多くのユースケースがあります。 このため、リクエストはNginxがリクエストを処理するためのURIとして送信される必要があります。 たとえば、Nginxはserverブロックとlocationブロックを使用します。前者は要求されたホストを解釈し、後者は後でURI部分と一致します。 リクエスト全体がURIになります。

Nginx構成ファイル-NginxとApacheの比較

全体として、URIは、実行する機能に適応できるため、Nginxにとってより柔軟です。 それでも、Apacheのシステムは、Webサーバーとしての役割を果たすだけでよいので機能します。

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

キャッチオールの答えは、どのサーバーソフトウェアを選択する必要があるかということです。 シンプルです:それはあなたのホスティングプロバイダーが提供するものです。 多くの場合、選択の余地はありません。 多くのウェブホストは、NginxとApacheのどちらを使用するかを決定する場合に一致する必要があるのと同じパターンに従っていることに気付きました。

  • 一定の構成が必要なサーバーを実行する場合、またはユーザーに構成の選択肢を提供する場合は、Apacheが最適です。
  • ただし、優れたパフォーマンスと堅実なセキュリティを提供し、ユーザーではなく構成を処理したい場合は、Nginxが最適です。

パフォーマンスに関しては、Apache固有のアーキテクチャのため、より多くのメモリを消費する可能性があります。 Nginxは、トラフィックの多い状況で、特に大量の静的コンテンツを処理する必要がある場合に、より優れたものになります。

したがって、コンテンツの保存と提供をキャッシュに依存している場合は、Nginxが最適なオプションになる可能性があります。 ただし、Nginxは動的コンテンツを提供できないため、サーバーが使用するプロキシの効率に応じて、パフォーマンスがさらに低下することに注意してください。

トップへ戻る

結論

ほぼ圧倒的な数の選択肢を提供するWordPressの(そしてウェブサイトを運営している)分野はたくさんあります。 これが獣の性質です。 ただし、サイトをすばやく公開する必要がある場合は役に立ちません。

#Nginxと#Apache:どちらがあなたに適したWebサーバーですか?
クリックしてツイート

サーバーの種類の選択は、特に注意を払う必要がある重要かつ最前線の決定の1つです。 NginxとApacheはどちらも特定の状況でメリットがあるため、一般的な比較です。

私たちの意見では、Nginxはほとんどのベースをより優れたパフォーマンスでカバーできるため、ほとんどのWordPressユーザーにとってより良いオプションになります。 これが、パフォーマンスに重点を置いた人気のWordPressホストの多くが、KinstaやFlywheelなどのすべてNginxサーバースタックに移行した理由です。

とにかく、その選択が得られない場合は、ホストが提供するものは何でも安全に使用でき、ほとんどのWordPressサイトはどちらのWebサーバーでも完全に問題ありません。

NginxとApacheの間のフェンスのどこに座っていますか? 以下のコメントセクションでお知らせください。

無料ガイド

スピードアップするための5つの重要なヒント
あなたのWordPressサイト

読み込み時間を50〜80%短縮します
簡単なヒントに従うだけです。

無料ガイドをダウンロード