注:このチュートリアルは古く、保守されていません。 Ubuntu18.04およびUbuntu16.04の更新バージョンが利用可能です

NginxとApacheを一緒に実行する理由

nginxとapacheはどちらも強力で効果的なサーバーです。 Apacheは現在、Webサイトのナンバーワンサーバーとして君臨しており、2006年の公開以来、nginxは世界を席巻し、現在はアクティブサイトのナンバー2サーバーになっています。 それぞれのサーバーが人気を博している理由は明らかです。apacheのパワーとnginxの速度はよく知られています。 ただし、どちらのサーバーにも欠点があります。apacheはサーバーのメモリに負担をかけますが、nginx(静的ファイルに最適)は動的コンテンツ用にphp-fpmまたは同様のモジュールの助けを必要とします。

ただし、静的Webサーバーのフロントとしてnginxを使用し、バックエンドをApacheで処理することで、2つのWebサーバーを組み合わせて大きな効果を上げることができます。

設定

このチュートリアルの手順を実行するには、仮想プライベートサーバーに対するsudo権限が必要です。

sudo権限を持つユーザーを作成するには、初期ubuntuサーバーセットアップチュートリアルの3番目と4番目の手順を実行します。

nginxをインストールします

まず、サイトのフロントエンドにサービスを提供するnginxをインストールして構成する必要があります。

apt-getからダウンロードしましょう:

sudo apt-get install nginx

ダウンロードが完了したら、先に進んで、フロントエンドで実行するように仮想ホストを構成できます。

構成に加える必要のある変更がいくつかあります。

nginxを構成する

nginx構成を開きます。

sudo nano /etc/nginx/sites-available/example

次の構成では、nginxをフロントエンドサーバーとして使用するように設定します。 これはデフォルトの設定と非常によく似ており、詳細は構成の下にあります。

server {
        listen   80; 

        root /var/www/; 
        index index.php index.html index.htm;

        server_name example.com; 

        location / {
        try_files $uri $uri/ /index.php;
        }

        location ~ \.php$ {
        
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $host;
        proxy_pass http://127.0.0.1:8080;

         }

         location ~ /\.ht {
                deny all;
        }
}

次の変更が構成に実装されました。

  • ルートが正しいWebディレクトリに設定されました
  • index.phpがインデックス行に追加されました
  • try_filesは、訪問者が要求するページを提供しようとします。 nginxができない場合、ファイルはプロキシに渡されます
  • proxy_passは、プロキシされたサーバーのアドレスをnginxに許可します
  • 最後に、Apacheのドキュメントルートがnginxのドキュメントルートと一致する場合、 “location〜/\。ht{“ロケーションブロックは.htaccessファイルへのアクセスを拒否します

この構成は、phpで終わるすべての拡張機能がポート8080で実行されるapacheバックエンドに再ルーティングされるシステムをセットアップします。

仮想ホストをアクティブ化します。

sudo ln -s /etc/nginx/sites-available/example /etc/nginx/sites-enabled/example

さらに、デフォルトのnginxサーバーブロックを削除します。

sudo rm /etc/nginx/sites-enabled/default

次のステップは、apacheをインストールして構成することです。

Apacheをインストールします

nginxの処理が完了したら、バックエンドであるapacheをインストールします。

sudo apt-get install apache2

nginxがまだオンになっていないため、Apacheはポート80で実行を開始します。

Apacheを構成する

バックエンドを引き継ぐようにApacheを設定する必要があります。これは、nginxに伝えたように、ポート8080で実行されます。 apacheポートファイルを開いて、正しいポートでのapacheの設定を開始します。

sudo nano /etc/apache2/ports.conf

次の行を見つけて変更し、ローカルホストからのみアクセスできるポート8080でapacheを実行します。

NameVirtualHost 127.0.0.1:8080
Listen 127.0.0.1:8080

保存して終了。

続いて、新しい仮想ホストファイルを開き、デフォルトのapacheファイルからレイアウトをコピーします。

sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/example
sudo nano /etc/apache2/sites-available/example

ここで対処する必要がある主な問題は、仮想ホストをもう一度ポート8080で実行する必要があることです(nginxに指定されたデフォルトの80ではありません)。

行は次のようになります。

&ltVirtualHost 127.0.0.1:8080>

ドキュメントルートが正しいことを確認してください。 ファイルを保存して終了し、その仮想ホストをアクティブ化します。

sudo a2ensite example

テストを開始する前に、apacheにphpを装備する必要があります。 さあ、今すぐインストールしてください:

 sudo apt-get install php5

両方のサーバーを再起動して、変更を有効にします。

sudo service apache2 restart
sudo service nginx restart

終わらせる

サイトのフロントエンドでnginxを実行し、バックエンドでapache処理phpを使用してVPSを設定しました。 ドメインをロードすると、サイトのデフォルトページに移動します。

一般的なphpスクリプトを実行することで、情報がapacheにルーティングされていることを確認できます。

先に進み、php.infoファイルを作成します。

sudo nano /var/www/info.php

次の行をそのファイルに貼り付けます。

&lt?
phpinfo( );
?>

保存して終了。

domain / info.phpにアクセスすると、php情報画面が表示され、これがapacheによって処理されたことがわかります。 (スクリーンショットここ

最後に、このコマンドを入力すると、開いているポートと各ポートにあるアプリケーションを確認できます。

sudo netstat -plunt

続きを見る

nginxとApacheを一緒に構成すると、サーバーが大幅に強化される可能性があります。これは簡単な概要です。 2つを一緒に構成することについて具体的な質問がある場合は、お気軽に Q&Aフォーラム喜んでお答えします。

EtelSverdlov著