Apache と nginx

管理者は、nginx をインストールすることによって、顧客のウェブサイトをホストするウェブサーバの能力を向上できます。nginx とは、高パフォーマンスな補助的ウェブサーバであり、通常はリバースプロキシサーバとして使用します。このウェブサーバは、大量の静的コンテンツ(画像、動画、CSS、XML など)の配信専用に設計されています。Apache と比べ、nginx は大量の同時接続が発生する状況で非常に効率的です。このほかに、nginx が Apache より優れている点としては、クライアント接続ごとのメモリ消費量が大幅に少なくなります。

nginx の利点をフルに活用するために、Plesk では nginx がインターネットと Apache の間のリバースプロキシサーバとして構成されます。つまり、nginx は、サイト訪問者からのすべての要求を処理するフロントエンドのウェブサーバとなります。要求は Apache に送信され、Apache が静的コンテンツと動的コンテンツを識別します。要求が静的ファイル(jpg、css、html など)であれば、Apache は登録されたすべてのハンドラに要求を渡し(.htaccess ディレクトリレベルの構成の適用、URL 変更など)、要求されたファイルに関するファイルシステム上の場所のみを含む応答を nginx に返します。続いて nginx がファイルを探し、クライアントに送信します。要求が動的ファイル(PHP スクリプトなど)であれば、Apache はファイルを実行し、応答を nginx に返します。nginx がこれをクライアントに提供します。

このような nginx と Apache の連携には、次のようなメリットがあります。

Plesk での nginx による HTTP 要求の処理方法に関する技術的な詳細は、このセクションで後ほど説明します。Plesk で nginx のサポートを有効にする方法については、「nginx をインストールする」セクションを参照してください。nginx を使用しない場合は、「nginx を無効にする」セクションの説明に従って、Apache をフロントエンドのウェブサーバにしてください。

Plesk での nginx による HTTP 要求の処理方法

nginx と Apache をシームレスに統合するために、Plesk では、さらに次の 2 つの Apache モジュールが使用されています。

ここでは、Plesk でこれらのモジュールによって静的コンテンツと動的コンテンツに対する要求を処理する方法について詳しく説明します。

静的ファイルに対する HTTP 要求の処理シーケンスは次のようになります(図を参照)。

  1. クライアントがウェブサーバに要求を送信します。
  2. nginx では X-Accel-Internal ヘッダ(mod_aclr2 が使用する)および X-Forwarded-For ヘッダ(クライアントの IP アドレスが含まれる)が要求に追加され、その要求が Apache に送信されます。
  3. Apache が要求を受け取り、登録されたハンドラによる処理を開始します(.htaccess 構成の適用、URL の変更など)。このステップでは、mod_rpaf によって Apache 変数 REMOTE_ADDR にある nginx サーバの IP アドレスが X-Forwarded-For ヘッダにあるクライアントのアドレスに書き換えられます。
  4. 登録されたすべてのハンドラによって要求が処理された後で、mod_aclr2 に要求が渡されます。このハンドラは X-Accel-Internal ヘッダが存在することを確認します。このヘッダが存在する場合、このモジュールは nginx に、コンテンツの長さがゼロで X-Accel-Redirect ヘッダが付いた応答を送信します。このヘッダには、mod_aclr2 によって確認された、正確なファイルの場所が含まれています。
  5. nginx が応答を受け取ると、nginx はファイルを探し、クライアントに配信します。

次の図は、Plesk で 2 KB の GIF ファイルに対する要求を処理する流れを図示しています。

static_seq

動的コンテンツに対する要求の処理の場合も、ステップ 1〜3 は同じです。続いて、対応する Apache モジュールのハンドラ(mod_phpmod_perlmod_cgi など)に要求が渡されます。この要求は mod_aclr2 には渡されません(SSI 要求を除く)。ハンドラが応答を生成して nginx に送信し、nginx が応答をクライアントに配信します。次の図は、Plesk で PHP ファイルに対する要求を処理する流れを図示しています。


このセクションの内容:

nginx をインストールする

nginx を無効にする

 

nginx をインストールする

Plesk をクリーンインストールすると、nginx がデフォルトで有効になります。旧バージョンからアップグレードした場合は、[ツールと設定]>[アップデートおよびアップグレード]>[コンポーネントを追加]で、アップグレード後いつでも nginx コンポーネントを追加することができます。コンポーネントの追加後に、[ツールと設定]>[サービス管理]リバースプロキシサーバ(nginx)サービスを実行する必要があります。

インストールされている nginx サーバのバージョンを確認するには、[ツールと設定]>[サーバコンポーネント]の順に選択します。

 

nginx を無効にする

Apache ウェブサーバ単独の構成に戻すには、[ツールと設定]>[サービス管理]の順に選択して、リバースプロキシサーバ(nginx)サービスを停止します。

nginx_stop

nginx をもう一度フロントエンドのウェブサーバにするには、リバースプロキシサーバ(nginx)サービスを起動します。

注:リバースプロキシサーバ(nginx)」サービスの処理を開始/停止すると、nginx が起動/停止するだけでなく、ウェブサーバの構成(nginx と Apache の組み合わせまたは Apache のみをフロントエンドウェブサーバに使用)が切り替わります。再起動処理は、他のすべてのサービスと同様に動作し、nginx サービスが再起動します。