はじめに
ApacheとNginxは、世界で最も広く使用されている2つのオープンソースWebサーバーです。 全体として、インターネット全体のトラフィックの50%以上を処理します。 両方のソリューションは、さまざまなワークロードで動作し、他のアプリケーションと対話して完全なWebスタックを実装できます。
ApacheとNginxには多くの類似した品質があるにもかかわらず、完全に互換性のあるソリューションと見なすことはできません。 それぞれに利点があり、どのWebサーバーをどの状況で選択するかを理解することが重要です。 この記事では、これらの各Webサーバーが異なる条件下でどのように動作するかについて説明します。
一般的なレビュー
ApacheとNginxの違いに飛び込む前に、これらの各プロジェクトの背景を簡単に見てみましょう。
アパッチ
Apache HTTPサーバーは1995年にRobert McCoolによって開発され、1999年からApache Software Foundation(Apache Software Development Fund)の監督の下で開発されました。 HTTPサーバーは最初で最も人気のある基盤プロジェクトであるため、通常は単にApacheと呼ばれます。
Web North Apacheは、1996年以来、インターネット上で最も人気のあるWebサーバーです。 Apacheで人気があるため、強力なドキュメントとサードパーティソフトウェアとの統合があります。
管理者は、その柔軟性、パワー、および広範な可用性のために、多くの場合Apacheを選択します。 動的にロード可能なモジュールのシステムを使用して拡張し、外部ソフトウェアを使用せずに多数の解釈されたプログラミング言語でプログラムを実行できます。
Nginx
2002年、イゴールシソエフは、ソフトウェアが1万の同時接続で動作するための要件であるC10Kの問題を解決するために、Nginxの作業を開始しました。 最初のパブリックリリースは2004年にリリースされ、非同期イベント駆動型アーキテクチャのおかげで目標が達成されました。
Nginxは、リソースの使用率が軽く、最小限のハードウェアで簡単に拡張できるため、リリース以来人気を博し始めました。 Nginxは静的コンテンツの配信に優れており、動的リクエストを処理するように設計された他のソフトウェアに動的リクエストを転送するように設計されています。
Nginxは、リソースの効率的な消費と負荷時の応答性、およびWebサーバーおよびプロキシとして使用できるため、多くの場合、管理者がNginxを選択します。
接続処理アーキテクチャ
ApacheとNginxの最も大きな違いの1つは、接続の処理方法とさまざまな種類のトラフィックへの応答方法です。
アパッチ
Apacheは、クライアント要求の処理方法を担当する複数のマルチプロセッシングモジュール(MPM)を提供します。 これにより、管理者は接続処理ポリシーを定義できます。 以下は、Apache MPMモジュールのリストです。
- mpm_prefork — . . MPM . , . RAM, MPM . , . , PHP , MPM
mod_php
. - mpm_worker — , . . , mpm_worker mpm_prefork. , , .
- mpm_event — mpm_worker, keep-alive . mpm_worker keep-alive. Mpm_event keep-alive . keep-alive , . Apache 2.4.
Apache .
Nginx
Nginx Apache, , , . Nginx event-driven .
Nginx - . , . .
, , event loop . , . .
Nginx' . , CPU , .
, Apache Nginx .
Apache
Apache file-based . MPM.
Apache . - . Apache .
Apache . , .
Nginx
Nginx . PHP Nginx , . .
, Nginx , Nginx' (http, FastCGI, SCGI, uWSGI, memcache). , , .
, . , , , . . Apache , .
- Apache .
Apache
Apache , . , Apache ,
.htaccess
.
, Apache
.htaccess
. -, URL' (URL rewrite), , .
, Apache,
.htaccess
. -, , -. , -
.htaccess
.
(CMS) -. , .
Nginx
Nginx
.htaccess
. Apache, .
.htaccess
— . Apache
.htaccess
, - . , .
Nginx , , directory lookup (, ).
. Apache , . , .
,
.htaccess
Apache, .
URI
- .
Apache
Apache URI, .
<Directory>
<File>
, —
<Location>
.
Apache -, . document root - , , . , .
Apache .
<Location>
URI . , .
Apache c , webspace, . -, ,
.htaccess
. Apache URI- .
Nginx
Nginx , -, -. URI, .
Nginx . Nginx , URI.
, Nginx
<server>
<location>
.
<server>
, ,
<location>
URI, . , URI, .
(mapped) . Nginx server location, document root URI, .
( URI) , Nginx URI, -, . Nginx , . Nginx ,
.htaccess
.
Apache, Nginx , .
Apache
Apache , , . Apache , , .
Apache . , ,
mod_php
PHP- .
. : URL' (URL rewrite), , , , , , , , . .
Nginx
Nginx , Apache. Nginx , .
Nginx . , . , - .
, Nginx , , . .
Nginx , Apache: , , , , URL', -, , , , .
, ,
.
Apache
Apache . Apache, . Apache, .
- Apache. , .
Apache . Apache, - Apache -
.htaccess
.
Nginx
Nginx , .
- , . -, .
Nginx Apache, Nginx. Nginx Nginx.
Apache Nginx
Apache Nginx , . , .
Nginx Apache -. Nginx , Apache — . Nginx - .
Nginx , , PHP-, Apache, , Nginx', .
, Nginx . Apache , , Apache.
: Nginx , .
Apache, Nginx — , . .
, , . . , - , .