1. Apache と Nginx の長所と短所
Apache に対する nginx の利点:
軽量で、Web サービスとしても機能し、Apache よりもメモリとリソースの使用量が少なくなります。同時実行防止、Apache がブロックしている間、nginx はリクエストを非同期かつ非ブロックで処理し、nginx は高い同時実行性を維持できます。低リソース消費と高いパフォーマンス 高度にモジュール化された設計で、モジュールの作成が比較的簡単 コミュニティが活発で、さまざまな高性能モジュールが迅速に作成されます nginx に対する Apache の利点: リライト、 nginx よりも優れた rewrite は強力です モジュールが非常に多く、基本的に考えられるすべてを見つけることができます バグが少なく、nginx には比較的多くのバグがあります 非常に安定しています 一般的に、nginx が存在する理由つまり、パフォーマンスが必要な Web サービスには nginx を使用します。パフォーマンスは必要なく、安定性だけが必要な場合は、Apache を使用してください。後者のさまざまな機能モジュールは前者よりも適切に実装されており、たとえば ssl モジュールは前者よりも優れており、設定可能な項目が増えています。ここで注意すべき点の 1 つは、epoll (freebsd 上の kqueue) ネットワーク IO モデルが nginx の高い処理パフォーマンスの根本的な理由ですが、すべての場合に epoll であるわけではないということです。
静的サービスを提供するファイルが少数しかない場合、Apache の選択モデルは epoll よりもパフォーマンスが高い可能性があるため、大きなメリットとなります。もちろん、これはネットワーク IO モデルの原則に基づいた単なる仮定であり、それについて話す前に実際のアプリケーションをテストする必要があります。 2. Web サーバーとして: Apache と比較して、Nginx は使用するリソースが少なく、より多くの同時接続をサポートし、より高い効率を反映するため、仮想ホストプロバイダーで特に人気があります。同時接続数が多い場合、Nginx は Apache サーバーに代わる優れた選択肢です。Nginx は、米国の仮想ホスト ビジネス オーナーによく選ばれるソフトウェア プラットフォームの 1 つであり、最大 50,000 の同時接続の応答をサポートできます。
私たちの開発モデルとして epoll と kqueue を選択してくれた Nginx に感謝します 負荷分散サーバーとしての Nginx: Nginx は、Rails および PHP プログラムを内部で外部に提供することを直接サポートできるだけでなく、HTTP プロキシ サーバーとして外部サービスもサポートします。 Nginx は C で書かれた言語を採用しており、システム リソースのオーバーヘッドと CPU 使用効率の両方が Perlbal よりも優れています。メール プロキシ サーバーとしても、Nginx は非常に優れたメール プロキシ サーバーです (この製品を開発した最初の目的の 1 つは、メール プロキシ サーバーとしても機能します)、Last.fm は成功した素晴らしい使用体験を説明しています Nginx は、インストールが非常に簡単で、非常に簡潔な設定ファイル (Perl 構文もサポートします) を備えたサーバーです。バグが非常に少ない: Nginx は特に起動が簡単で、ほぼ 7*24 中断することなく実行でき、数か月間実行しても再起動する必要はありません。サービスを中断することなくソフトウェア バージョンをアップグレードすることもできます。 3. Nginx の構成はシンプルですが、Apache は複雑です Nginx の静的処理パフォーマンスは Apache の 3 倍以上です Apache の PHP サポートは比較的シンプルですが、Nginx は他のバックエンドと併用する必要があります Apache には Nginx よりも多くのコンポーネントがあります 現在、Web サーバーとしては Nginx が第一の選択肢です 4. 主要な違いは、Apache が同期マルチプロセス モデルであり、1 つの接続が 1 つのプロセスに対応するということです。 (10,000 レベル) が 1 つのプロセスに対応できます 5. nginx は静的ファイルをうまく処理しますが、メモリの消費は少ないですが、Apache が依然として主流であり、多くの豊富な機能を備えていることは間違いありません。もちろん、nginx がニーズに合っていると判断した場合は、nginx を使用する方が経済的です 6. 個人的には、これまでの使用状況から判断すると、nginx の負荷容量は Apache よりもはるかに高いです。最新のサーバーもnginxを使用しています。さらに、nginx の設定を変更した後、Apache が再起動されると、設定に問題があるかどうかをテストできなくなり、変更するときは非常に注意します。多くのクラスター サイトがあり、フロントエンドの nginx は同時実行性が高く、バックエンドの Apache クラスターとの連携も良好です。 7. nginx が動的リクエストを処理するのは役に立ちません。一般に、Apache は動的リクエストを処理する必要があり、nginx は静的リクエストと逆リクエストにのみ適しています。 8. 私の個人的な経験から言えば、nginx は非常に優れた負荷パフォーマンスを備えた非常に優れたフロントエンド サーバーです。Laoben で nginx を開き、Webbench を使用して 10,000 の静的ファイル リクエストをシミュレートするのは簡単です。 Apache は php などの言語のサポートが充実しています。また、apache は nginx よりも長く開発されており、バグが少ないという欠点があります。フロントエンドとバックエンドとして nginx を使用することをお勧めします。大規模な Web サイトでは、nginx のクラスター機能を使用することをお勧めします。9. Nginx が Apache よりも優れている主な理由は 2 つあります。1. Nginx 自体がリバース プロキシ サーバーであること。2. Nginx が他の Web サイトに対して 7 層の負荷分散をサポートしていること。もちろん、Nginx は Apache よりも高い同時実行性をサポートする可能性がありますが、NetCraft の統計によると、2011 年 4 月の時点で、Apache は依然として 62.71% を占め、Nginx は 7.35% でした。したがって、一般的に、Aapche は依然としてほとんどの企業にとって第一の選択肢です。なぜなら、その成熟したテクノロジーと開発コミュニティも非常に優れたパフォーマンスを達成しているからです。10. Web サーバーのニーズによって選択が決まります。ほとんどの場合、静的ファイル処理、PHP-CGI サポート、リバース プロキシ機能、フロントエンド キャッシュ、接続維持など、APACHE よりも nginx の方が優れています。 Apache+PHP (プリフォーク) モードでは、PHP の処理が遅い場合やフロントエンドの負荷が高い場合、Apache プロセスの数が急増し、サービス妨害が発生しやすくなります。 11. nginx lua モジュールをご覧ください: https://github.com/chaoslaw... Apache には nginx より多くのモジュールがありますが、Apache が最も人気があるのはその理由です。 ?ほとんどの人は、nginx に更新したり、新しいことを学ぶのが面倒です 12. nginx の場合、その設定ファイルは非常に簡潔で、多くのことがシンプルで効率的で、使用するリソースが少なく、強力なプロキシ機能を備えていることが気に入っています。 . フロントエンド応答サーバーに非常に適しています 13. Nginx は、同時実行性が高く、CPU メモリ使用量が少ないという利点があります。
以上、ApacheとNginxの違いを内容も含めて紹介しましたが、PHPチュートリアルに興味のある友人の参考になれば幸いです。