Apache、Tomcat、Nginx サーバーの詳細な理解と比較分析

Apache、Tomcat、Nginx サーバーの詳細な理解と比較分析

質問1件

会社のサーバーはApacheを使用しており、バックエンドはPHP、サーバーはLinux C/C++を使用しています。Apacheサーバーについてはよく耳にします。以前インターンをしていた会社のサーバーはJavaを使用していました。nginxリバースプロキシサーバーとtomcatを使用していたことを漠然と覚えています。リクエストは最初にnginxを通過し、次にtomcatを介してリクエストを転送します。Apacheサーバー、tomcat、nginxの理解は少し曖昧です。そこで今日、関連情報を参照して使用シナリオを比較し、

2 Apache、Tomcat、Nginx の用語

1) アパッチ

Apache HTTP サーバーは、Linux、Unix、Windows など、広く使用されているほぼすべてのコンピュータ プラットフォームで実行できるモジュール サーバーです。これはアプリケーション サーバーです。

Apache は多くのモジュールをサポートしており、パフォーマンスも安定しています。Apache 自体は静的解析であり、静的 HTML や画像などに適しています。たとえば、以前使用したことがある freemarker も静的ですが、拡張スクリプトやモジュールを通じて動的なページをサポートできます。

Apache は PHP、cgi、perl をサポートできますが、Java を使用する場合は、Apache のバックグラウンドで Tomcat が Java をサポートし、Apache から Tomcat に Java リクエストを転送して処理する必要があります。

デメリット: 構成が比較的複雑で、動的ページをサポートしていません。動的ページの解析をサポートするには、FastCGI や Tomcat などのプラグイン拡張機能が必要です。j2ee で作業している友人は、動的ページでは jsp を使用する必要があるため、動的ページを解析するには Tomcat が必要であることを知っています。Tomcat はサーブレット コンテナーです。もちろん、Apache から独立して、Tomcat をサーバーとして直接使用することもできます。

2) トムキャット

Tomcat はアプリケーション (Java) サーバーです。これは単なるサーブレット (JSP もサーブレットに変換されます) コンテナーです。Apache の拡張機能と考えることもできますが、Apache とは独立して実行できます。つまり、Apache がない場合、静的ページと動的ページ (jsp) を解析できるのは Tomcat だけです。

3) エングクス

Nginx は、ロシア人によって書かれた非常に軽量な HTTP サーバーです。高性能な HTTP およびリバース プロキシ サーバーであり、IMAP/POP3/SMTP プロキシ サーバーでもあります。

3. 比較

1) ApacheとTomcatの比較

類似点:

どちらも Apache 組織によって開発されており、どちらも HTTP サービス機能を備え、どちらもオープンソースで無料です。

違い:

a) Apache は HTTP サービスと関連構成 (仮想ホスト、URL 転送など) を提供するために使用され、Tomcat は Java EE の JSP およびサーブレット標準に従って Apache 組織によって開発された JSP サーバーです。

b) ApacheはWebサーバー環境プログラムです。有効にすることでWebサーバーとして使用できますが、ASP、PHP、Freemarkerなどの静的Webページのみをサポートしています。Javaサーバーでjspなどの動的言語を使用する場合は、jspを解析するためのTomcatインタープリターが必要になります。Apacheでは解析できません。この点を覚えておいてください。

c) Apache は HTTP サーバーに重点を置いていますが、Tomcat はサーブレット コンテナーに重点を置いています。JSP をサポートしていますが、静的 Web ページには適していません。言い換えると、Apache は Tomcat よりも静的ファイルの処理に優れています。Tomcat は動的言語 (jsp) の解析により実用的です。Apache を使用して静的ファイルを処理し、Tomcat を使用して動的ファイルを処理できます。

d) ApacheはWebサーバーであり、Tomcatはアプリケーション(Java)サーバーであり、Apacheの拡張機能と見なすことができますが、Apacheとは独立して実行できます。

実際の使用:

Apache+Tomcat (Java サーバーの場合)

クライアントが静的ページを要求した場合、その要求に応答する必要があるのは Apache サーバーだけです。

クライアントが動的ページを要求すると、Tomcat サーバーはその要求に応答します。JSP はサーバーによって解釈されるため、この統合により Tomcat のサービス オーバーヘッドを削減できます。

Tomcat は Apache の拡張機能であることがわかります。

2) NginxとApacheの比較

1 Nginxの利点

a) 軽量。Web サービスとしては、Apache よりもメモリとリソースをあまり消費しません。

b) 並行性防止、nginx はリクエストを非同期かつ非ブロッキングで処理し、複数の接続 (10,000 レベル) を 1 つのプロセスに対応させることができますが、Apache は同期ブロッキング タイプ、同期マルチプロセス モデルであり、1 つの接続が 1 つのプロセスに対応します。

c) 高度にモジュール化された設計で、モジュールの作成は比較的簡単です。

d) 負荷分散を提供する

e) シンプルな構成

f) Nginxの静的処理パフォーマンスはApacheの3倍以上高い

e) nginxは静的プロキシとリバースプロキシにのみ適しています

リバースプロキシの理解:

リバース プロキシとは、プロキシ サーバーを使用してインターネットからの接続要求を受け入れ、その要求を内部ネットワーク上のサーバーに転送して処理することを指します。リバース プロキシ自体は要求を処理しません。

サーバーから取得した結果は、インターネット上の接続を要求したクライアントに返されます。このとき、プロキシサーバーは外部からはWebサーバーのように見えますが、実際には何も処理を行わず、データを転送するだけです。

2 Apacheの利点

a) Apache の書き換えは nginx の書き換えよりも強力です。

b) 動的ページをサポートします。

c) 多くのモジュールをサポートしており、基本的にすべてのアプリケーションをカバーします。

d) 安定したパフォーマンス。

e) ApacheのPHPサポートは比較的シンプルです

f) nginx と比較すると、Apache は動的リクエストを処理するのに適しています。

3) NginxとTomcatの比較

Nginxは一般的に静的処理に非常に優れていることはわかっていますが、jspなどの動的言語を解析することはできません。また、jspを解釈するにはTomcatが必要なので、一般的には動的処理にはTomcatを使用し、静的処理にはNginxを使用します。以前インターンシップをした会社のウェブサイトでは、Nginx + Tomcatの組み合わせを使用していました。Nginxはリバースプロキシとして機能します。静的処理をNginxで処理すると、動的リクエストはバックグラウンドでTomcatによって処理されます。これがNginxの動的分離メカニズムです。以前はよくわかりませんでしたが、なぜこのように対応しているのかがようやくわかりました。結局のところ、Nginxの静的処理能力はTomcatよりも強力なので、リクエストが最初にNginxを通過する必要があり、ここでApacheサーバーを使用する必要はありません。

4 まとめ

a) 静的処理能力:

Nginx (Apache の少なくとも 3 倍の速度) > Apache > Tomcat

b) Nginx の利点: 負荷分散、リバース プロキシ、静的ファイルの処理。これが、Java サーバー Tomcat が最初に Nginx サーバーによって処理される必要がある理由です (リクエストを転送するだけで、他の操作は実行しません。リバース プロキシの説明は上記にあります)。Nginx は並行性が優れており、CPU とメモリの使用量が低くなります。

c) Apache の利点: Tomcat サーバーと比較すると、静的ファイルの処理と高速性の利点があります。 Apache は静的パーサーであり、静的 HTML や画像に適しています。もちろん、強力な読み取りおよび書き込み機能を備えています。書き換えが頻繁に行われる場合は、Apache の方が安定しており、動的な処理に利点があるため、より適しています。前提として、Tomcat は存在​​しない、つまり Java サーバーではないということです。

d) Tomcat: 動的リクエストを処理する動的解析コンテナであり、JSP と Servlet をコンパイルするためのコンテナです。Nginx には動的分離メカニズムがあります。静的リクエストは Nginx で直接処理され、動的リクエストはバックエンドに転送されて Tomcat で処理されます。

要約する

以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。これについてもっと知りたい場合は、次のリンクをご覧ください。

以下もご興味があるかもしれません:
  • Linux サーバー向け LVS、Nginx、HAProxy ロードバランサーの比較
  • Python 運用保守自動化 nginx 設定ファイル比較操作例
  • NginxとPHPの2つの展開方法の詳細な比較
  • Nginx HttpMemcModule と memcached への直接アクセスの効率性の比較テスト
  • nginxとlvsのメリットとデメリット、そして適切な使用環境

<<:  Node.jsを理解するのはとても簡単です

>>:  MySQLトリガーはPHPプロジェクトで情報のバックアップ、復元、クリアに使用されます。

推薦する

JS上級編ES6の6つの継承方法

目次1. プロトタイプチェーン継承2. コンストラクタによる継承3. 組み合わせ継承4. プロトタイ...

CSS3を使用してボタンホバーフラッシュダイナミック特殊効果コードを実装する

CSS3 の列シリーズ属性を使用してウォーターフォールレイアウトを作成する方法を紹介しました。興味の...

JavaScript で 2 次元配列を作成するためのヒント

Js での 2 次元配列の作成:まず、JavaScript は 1 次元配列のみをサポートしています...

組み込み移植 docker エラー問題 (概要)

長い移植と情報検索の期間を経て、組み込みDockerの問題を解決することができました。インターネット...

データベースの削除から逃走までの MySQL の徹底分析_上級編 (I) - データ整合性

1. データ整合性の概要1. データ整合性の概要データの冗長性とは、データベース内に重複したデータが...

Win10+Ubuntu 20.04 LTS デュアル システム インストール (UEFI + GPT) (画像とテキスト、複数の画像には注意)

Win10 のインストール (すでにインストールされている場合はスキップしてください) win10...

HTML 特殊文字エンコーディング CSS3 コンテンツに関する簡単な説明:「私は特別なシンボルです」

プロジェクトで使用されている特殊文字とアイコンHTMLコードXML/HTML コードコンテンツをクリ...

JavaScript の実行コンテキストとコールスタックの詳細な説明

目次1. 実行コンテキストとは何か2. 実行コンテキスト スタックとは何ですか? 3. 実行コンテキ...

HTML Web ページ リスト タグ学習チュートリアル

HTML Web ページ リスト タグの学習チュートリアル。 HTML ページでは、リストはアウトラ...

仮想マシンの複製に関するVirtual Boxチュートリアル図

VMに慣れた後、BOXに切り替えるのは少し異なります。たとえば、コピーネットワークカードを2枚使って...

InnoDB エンジンのパフォーマンスを最適化するための my.cnf パラメータ構成

私はインターネット上で数え切れないほどの my.cnf 構成を読みましたが、言及されている構成のほと...

製品の拡大鏡効果を実現する JavaScript

この記事では、参考までに、製品拡大鏡を実装するためのJavaScriptの具体的なコードを紹介します...

iFrameは背景を覆うポップアップレイヤーとして使うのに最適です

最近、私は「ぶどうコレクション」というプロジェクトに取り組んでいます。簡単に言うと、Budou ペー...

フィールドの文字セットの違いによる MySQL のインデックス失敗の解決策

インデックスとは何ですか?なぜインデックスを作成するのですか?インデックスは、列に特定の値を持つ行を...

HTML ウェブページでのアンカー(名前付きアンカー)の使用の概要

以下の情報はインターネットから収集したものです1. アンカーは、Web ページ作成におけるハイパーリ...