前書き

ApacheとNginxは、PHPでよく使用される2つの人気のあるオープンソースWebサーバーです。 要件が異なる複数のWebサイトをホストする場合、同じ仮想マシンで両方を実行すると便利です。 単一のシステムで2つのWebサーバーを実行する一般的なソリューションは、複数のIPアドレスまたは異なるポート番号を使用することです。

IPv4とIPv6の両方のアドレスを持つドロップレットは、一方のプロトコルのApacheサイトと他方のプロトコルのNginxサイトにサービスを提供するように構成できますが、ISPによるIPv6の採用はまだ普及していないため、これは現在実用的ではありません。 2番目のWebサーバーに「81」や「8080」などの別のポート番号を設定することも別の解決策ですが、URLをポート番号(「+ http://example.com:81+」など)と共有することはできません常に合理的または理想的ではありません。

このチュートリアルでは、NginxをWebサーバーとApacheのリバースプロキシの両方として構成する方法をすべて1つのドロップレットで説明します。 Webアプリケーションによっては、特にSSLサイトが構成されている場合、Apacheリバースプロキシ対応を維持するためにコードの変更が必要になる場合があります。 これを確実にするために、特定の環境変数を書き換える* mod_rpaf *という名前のApacheモジュールをインストールして、ApacheがWebクライアントからのリクエストを直接処理しているように見せます。

1つのドロップレットで4つのドメイン名をホストします。 Nginxは2つのサービスを提供します: + example.com +(デフォルトの仮想ホスト)と + sample.org +。 残りの2つ、「+ foobar.net 」と「 test.io +」は、Apacheによって提供されます。

前提条件

  • 新しいUbuntu 14.04ドロップレット。

  • `+ sudo +`特権を持つ標準ユーザーアカウント。 Ubuntu 14.04での初期サーバーセットアップのステップ2および3に従って、標準アカウントをセットアップできます。 。

  • 目的のドメイン名は、DigitalOceanコントロールパネルでドロップレットのIPアドレスを指している必要があります。 例については、https://www.digitalocean.com/community/tutorials/how-to-set-up-a-host-name-with-digitalocean [DigitalOceanでホスト名を設定する方法]のステップ3を参照してください。これを行う方法。 ドメインのDNSを別の場所でホストしている場合は、代わりに適切な_Aレコード_を作成する必要があります。

オプションの参照

このチュートリアルでは、ApacheおよびNginxの仮想ホストの基本的な知識、およびSSL証明書の作成と構成が必要です。 これらのトピックの詳細については、次の記事を参照してください。

ステップ1-ApacheおよびPHP5-FPMのインストール

ApacheとPHP-FPMに加えて、PHP FastCGI Apacheモジュールもインストールする必要があります。 これは、「+ libapache2-mod-fastcgi 」であり、Ubuntuの* multiverse *リポジトリで利用できます。最初に「 sources.list +」ファイルで有効にする必要があります。

sudo nano /etc/apt/sources.list

次の行を見つけて、先頭のハッシュ記号( )を削除してコメント解除します。

# deb http://mirrors.digitalocean.com/ubuntu trusty multiverse

. . .

# deb http://mirrors.digitalocean.com/ubuntu trusty-updates multiverse

これにより、次のように表示されます。

deb http://mirrors.digitalocean.com/ubuntu trusty multiverse

. . .

deb http://mirrors.digitalocean.com/ubuntu trusty-updates multiverse

ファイルを保存し、aptリポジトリを更新します。

sudo apt-get update

次に、必要なパッケージをインストールします。

sudo apt-get install apache2 libapache2-mod-fastcgi php5-fpm

ステップ2-ApacheおよびPHP5-FPMの構成

このステップでは、Apacheのポート番号を「8080」に変更し、「+ mod_fastcgi +」モジュールを使用してPHP5-FPMで動作するように設定します。 Apache構成ファイルを編集し、Apacheのポート番号を変更します。

sudo nano /etc/apache2/ports.conf

次の行を見つけます。

Listen 80

それをに変更してください。

Listen

保存して `+ ports.conf +`を終了します。

*注意:*通常、Webサーバーはリバースプロキシを設定するときに `127.0.0.1:8080 +`でリッスンするように設定されますが、そうすると、PHPの環境変数* SERVER_ADDR *の値がサーバーのパブリックではなくループバックIPアドレスに設定されますIP。 私たちの目的は、Webサイトがその前にリバースプロキシを表示しないようにApacheをセットアップすることです。 したがって、すべてのIPアドレスで「+8080」をリッスンするように設定します。

次に、Apacheのデフォルトの仮想ホストファイルを編集します。 このファイルの `+ <VirtualHost> `ディレクティブは、ポート ` 80 +`でのみサイトを提供するように設定されています。

sudo nano /etc/apache2/sites-available/000-default.conf

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

<VirtualHost *:80>

それをに変更してください。

<VirtualHost *:>

ファイルを保存し、Apacheをリロードします。

sudo service apache2 reload

Apacheが「8080」をリッスンしていることを確認します。

sudo netstat -tlpn
出力は以下のようになり、* apache2

8080 *をリッスンします。

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address     Foreign Address      State    PID/Program name
tcp        0      0 0.0.0.0:22        0.0.0.0:*            LISTEN   1086/sshd

tcp6       0      0 :::22             :::*                 LISTEN   1086/sshd

ステップ3-mod_fastcgiを使用するためのApacheの構成

Apacheはデフォルトで `+ mod_php +`で動作しますが、PHP5-FPMで動作するには追加の設定が必要です。

_ _
注意: `+ mod_php +`を使用して既存のLAMPのインストールでこのチュートリアルを試している場合は、まず次の方法で無効にしてください:

sudo a2dismod php5

_ _

`+ mod_action `に依存する ` mod_fastcgi `の設定ブロックを追加します。 ` mod-action +`はデフォルトで無効になっているため、まず有効にする必要があります。

sudo a2enmod actions

ドロップレットにインストールされているApacheのバージョンを確認するには、次を使用します。

sudo apache2 -v

それに応じて、 `+ fastcgi `設定ファイルを編集します。 これらの設定ディレクティブは、 ` .php +`ファイルのリクエストをPHP5-FPM UNIXソケットに渡します。

sudo nano /etc/apache2/mods-enabled/fastcgi.conf

`+ <IfModule mod_fastcgi.c>の最後に次の行を追加します。 . . * Apache 2.4 *の</ IfModule> + `ブロック:

AddType application/x-httpd-fastphp5 .php
Action application/x-httpd-fastphp5 /php5-fcgi
Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi
FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -socket /var/run/php5-fpm.sock -pass-header Authorization
<Directory /usr/lib/cgi-bin>
 Require all granted
</Directory>
  • Apache 2.2 *は `+ <Directory> +`セクションを必要としないため、次を追加します。

AddType application/x-httpd-fastphp5 .php
Action application/x-httpd-fastphp5 /php5-fcgi
Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi
FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -socket /var/run/php5-fpm.sock -pass-header Authorization

`+ fastcgi.conf +`で終了したら、設定テストを行います。

sudo apachectl -t
  • Syntax OK *が表示されたら、Apacheをリロードします。 127.0.1.1を使用して、「+ Couldがサーバーの完全修飾ドメイン名を確実に判断できませんでした」という警告が表示された場合。 「ServerName」ディレクティブをグローバルに設定して、このメッセージを抑制します。+ `、それで問題ありません。 今は影響しません。

sudo service apache2 reload

ステップ4-PHP機能の検証

PHPが動作するかどうかを確認するには、 `+ phpinfo()+`ファイルを作成し、Webブラウザーからアクセスします。

echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php

ブラウザでファイルを表示するには、「+ http://:8080 / info.php +」に移動しますが、DropletのIPアドレスを使用します。 これにより、PHPが使用している構成仕様のリストが表示されます。

image:https://assets.digitalocean.com/articles/apache_and_nginx/1.png [phpinfoサーバーAPI]

image:https://assets.digitalocean.com/articles/apache_and_nginx/2.png [phpinfo PHP変数]

ページの上部で、* Server API FPM / FastCGI と表示されていることを確認します。 ページの3分の2ほど下にある PHP変数*セクションに、* SERVER_SOFTWARE *がUbuntu上のApacheであることが表示されます。 これらは、 `+ mod_fastcgi +`がアクティブであり、ApacheがPHP5-FPMを使用してPHPファイルを処理していることを確認します。

ステップ5-Apache用の仮想ホストの作成

ドメイン `+ foobar.net `および ` test.io +`の2つのApache仮想ホストファイルを作成します。 これは、両方のサイトの_document root_ディレクトリを作成することから始まります。

sudo mkdir -v /var/www/{,}

次に、セットアップの完了後にテストするために、各ディレクトリに2つのファイルを追加します。

最初に、サイトごとに `+ index`ファイルを作成します。

echo "<h1 style='color: green;'>Foo Bar</h1>" | sudo tee /var/www//index.html
echo "<h1 style='color: red;'>Test IO</h1>" | sudo tee /var/www//index.html

次に、 `+ phpinfo()+`ファイル。

echo "<?php phpinfo(); ?>" | sudo tee /var/www//info.php
echo "<?php phpinfo(); ?>" | sudo tee /var/www//info.php

`+ foobar.net +`ドメインの仮想ホストファイルを作成します。

sudo nano /etc/apache2/sites-available/.conf

次のディレクティブをその中に配置します。

<VirtualHost *:*>
   ServerName
   ServerAlias www.
   DocumentRoot /var/www/
   <Directory /var/www/>
       AllowOverride All
   </Directory>
</VirtualHost>

ファイルを保存して閉じます。 次に、 `+ test.io +`に対して同じことを行います。

sudo nano /etc/apache2/sites-available/.conf
<VirtualHost *:*>
   ServerName
   ServerAlias www.
   DocumentRoot /var/www/
   <Directory /var/www/>
       AllowOverride All
   </Directory>
</VirtualHost>

注1: `+ AllowOverride All `は ` .htaccess +`サポートを有効にします。

*注2:*これらは最も基本的なディレクティブのみです。 Apacheでの仮想ホストのセットアップに関する完全なガイドについては、https://www.digitalocean.com/community/tutorials/how-to-set-up-apache-virtual-hosts-on-ubuntu-14-04-ltsを参照してください。 [Ubuntu 14.04 LTSでApache仮想ホストを設定する方法]。

両方のApache仮想ホストがセットアップされたので、 `+ a2ensite `コマンドを使用してサイトを有効にします。 これにより、 ` sites-enabled +`ディレクトリに仮想ホストファイルへのシンボリックリンクが作成されます。

sudo a2ensite
sudo a2ensite

Apacheの構成エラーを再度確認します。

sudo apachectl -t
  • Syntax OK *が表示されたら、それをリロードします。

sudo service apache2 reload

サイトが機能していることを確認するには、ブラウザで `+ http://:8080 `と ` http://:8080 +`を開き、* index.html *ファイルが表示されていることを確認します。

君は見るべきだ:

image:https://assets.digitalocean.com/articles/apache_and_nginx/3.png [foobar.net index page]

画像:https://assets.digitalocean.com/articles/apache_and_nginx/4.png [test.ioインデックスページ]

また、* info.php *ファイルにアクセスして、PHPが動作しているかどうかを確認します: + http://:8080 / info.php +`および `+ http://:8080 / info.php +

ステップ1で見たのと同じPHP構成仕様リストが各サイトに表示されるはずです。 現在、ポート `+ 8080 +`でApacheにホストされている2つのWebサイトがあります。

ステップ6-Nginxのインストールと構成

このステップでは、Nginxをインストールし、ドメイン「+ example.com 」と「 sample.org +」をNginxの仮想ホストとして設定します。 Nginxでの仮想ホストのセットアップに関する完全なガイドについては、https://www.digitalocean.com/community/tutorials/how-to-set-up-nginx-server-blocks-virtual-hosts-on-ubuntu-14を参照してください-04-lts [Ubuntu 14.04 LTSでNginxサーバーブロック(仮想ホスト)をセットアップする方法]。

Nginxをインストールします。

sudo apt-get install nginx

次に、デフォルトの仮想ホストのシンボリックリンクを削除します。

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

次に、Nginxの仮想ホストを作成します。 まず、両方のWebサイトの_document root_ディレクトリを作成します。

sudo mkdir -v /usr/share/nginx/{,}

Apache仮想ホストで行ったように、セットアップが完了した後のテストのために、 + index`ファイルと + phpinfo()+ `ファイルを再度作成します。

echo "<h1 style='color: green;'>Example.com</h1>" | sudo tee /usr/share/nginx//index.html
echo "<h1 style='color: red;'>Sample.org</h1>" | sudo tee /usr/share/nginx//index.html
echo "<?php phpinfo(); ?>" | sudo tee /usr/share/nginx//info.php
echo "<?php phpinfo(); ?>" | sudo tee /usr/share/nginx//info.php

ドメイン `+ example.com +`の仮想ホストファイルを作成します。

sudo nano /etc/nginx/sites-available/

Nginxは `+ server {。を呼び出します。 。 。} + `構成ファイルの領域*サーバーブロック*。 プライマリ仮想ホストのサーバーブロックを作成します。 `+ default_server +`設定ディレクティブは、これをデフォルトの仮想ホストにして、他の仮想ホストと一致しないHTTPリクエストを処理します。

次のファイルをファイルに貼り付けます:

server {
   listen 80 default_server;

   root /usr/share/nginx/;
   index index.php index.html index.htm;

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

   location ~ \.php$ {
       try_files $uri =404;
       fastcgi_pass unix:/var/run/php5-fpm.sock;
       fastcgi_index index.php;
       include fastcgi_params;
   }
}

ファイルを保存して閉じます。 次に、Nginxの2番目のドメインである「+ sample.org +」の仮想ホストファイルを作成します。

sudo nano /etc/nginx/sites-available/

サーバーブロックは次のようになります。

server {
   root /usr/share/nginx/;
   index index.php index.html index.htm;

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

   location ~ \.php$ {
       try_files $uri =404;
       fastcgi_pass unix:/var/run/php5-fpm.sock;
       fastcgi_index index.php;
       include fastcgi_params;
   }
}

ファイルを保存して閉じます。 次に、 `+ sites-enabled +`ディレクトリへのシンボリックリンクを作成して、両方のサイトを有効にします。

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

Nginx構成テストを実行します。

sudo service nginx configtest
  • OK *が表示されたら、Nginxをリロードします。

sudo service nginx reload

次に、WebブラウザでNginx仮想ホストの `+ phpinfo()`ファイルに ` http:/// info.php `および ` http:/// info.php +`でアクセスします。 * PHP変数*セクションをもう一度見てください。

image:https://assets.digitalocean.com/articles/apache_and_nginx/5.png [Nginx PHP Variables]

  • [“ SERVER_SOFTWARE”] nginx *で、ファイルがNginxによって直接提供されたことを示します。 * [“ DOCUMENT_ROOT”] *は、各Nginxサイトに対してこの手順で作成したディレクトリを指す必要があります。

この時点で、Nginxをインストールし、2つの仮想ホストを作成しました。 次に、Apacheでホストされているドメインを対象としたプロキシ要求に追加の仮想ホストをセットアップします。

ステップ7-Apacheの仮想ホスト用のNginxの構成

このセクションでは、 `+ server_name +`ディレクティブに複数のドメイン名を持つ追加のNginx仮想ホストを作成します。 これらのドメイン名のリクエストはApacheにプロキシされます。

新しいNginx仮想ホストファイルを作成します。

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

以下にコードブロックを追加します。 これは、両方のApache仮想ホストドメインの名前を指定し、それらのリクエストをApacheにプロキシします。 `+ proxy_pass +`のパブリックIPアドレスを使用することを忘れないでください。

server {
   listen 80;
   server_name ;

   location / {
       proxy_pass http://:8080;
       proxy_set_header Host $host;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header X-Forwarded-Proto $scheme;
   }
}

ファイルを保存し、シンボリックリンクを作成してこの新しい仮想ホストを有効にします。

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

構成テストを実行します。

sudo service nginx configtest
  • OK *が表示されたら、Nginxをリロードします。

sudo service nginx reload

ブラウザを開き、Apacheのドメイン名のいずれかで「+ http:///info.php+」にアクセスします。 * PHP Variables *セクションまでスクロールダウンし、表示された値を確認します。

画像:https://assets.digitalocean.com/articles/apache_and_nginx/6.png [Nginx経由のApacheのphpinfo]

変数* SERVER_SOFTWARE および DOCUMENT_ROOT は、このリクエストがApacheによって処理されたことを確認する必要があります。 変数 HTTP_X_REAL_IP および HTTP_X_FORWARDED_FOR *はNginxによって追加され、ブラウザーでURLにアクセスしているコンピューターのパブリックIPアドレスを表示する必要があります。

特定のドメインのリクエストをApacheにプロキシするようにNginxを正常にセットアップしました。 次のステップは、あたかもこれらのリクエストを直接処理しているかのように変数 `+ REMOTE_ADDR +`を設定するようにApacheを設定することです。

ステップ8-mod_rpafのインストールと構成

このステップでは、* mod_rpaf という名前のApacheモジュールをインストールします。これは、リバースプロキシによって提供される値に基づいて、 REMOTE_ADDR HTTPS 、および HTTP_PORT *の値を書き換えます。 このモジュールがないと、一部のPHPアプリケーションでは、プロキシの背後からシームレスに動作するようにコードを変更する必要があります。 このモジュールはUbuntuリポジトリに「+ libapache2-mod-rpaf」として存在しますが、時代遅れであり、特定の設定ディレクティブをサポートしていません。 代わりに、ソースからインストールします。

モジュールのコンパイルとビルドに必要なパッケージをインストールします。

sudo apt-get install unzip build-essential apache2-threaded-dev

GitHubから最新の安定版リリースをダウンロードします。

wget https://github.com/gnif/mod_rpaf/archive/stable.zip

以下で抽出します:

unzip stable.zip

作業ディレクトリに移動します。

cd mod_rpaf-stable

次に、モジュールをコンパイルしてインストールします。

sudo make
sudo make install

rpafモジュールをロードする `+ mods-available +`ディレクトリにファイルを作成します。

sudo nano /etc/apache2/mods-available/rpaf.load

ファイルに次の行を追加します。

LoadModule rpaf_module /usr/lib/apache2/modules/mod_rpaf.so

このディレクトリに別のファイルを作成します。 これには、構成ディレクティブが含まれます。

sudo nano /etc/apache2/mods-available/rpaf.conf

次のコードブロックを追加し、ドロップレットのIPアドレスを必ず追加してください。

<IfModule mod_rpaf.c>
       RPAF_Enable             On
       RPAF_Header             X-Real-Ip
       RPAF_ProxyIPs
       RPAF_SetHostName        On
       RPAF_SetHTTPS           On
       RPAF_SetPort            On
</IfModule>

各ディレクティブの簡単な説明を次に示します。 詳細については、 + mod_rpaf + READMEファイルを参照してください。

  • * RPAF_Header *-クライアントの実際のIPアドレスに使用するヘッダー。

  • * RPAF_ProxyIPs *-HTTPリクエストを調整するプロキシIP。

  • * RPAF_SetHostName *-ServerNameおよびServerAliasが機能するように仮想ホスト名を更新します。

  • * RPAF_SetHTTPS *-`+ X-Forwarded-Proto `に含まれる値に基づいて ` HTTPS +`環境変数を設定します。

  • * RPAF_SetPort *-`+ SERVER_PORT +`環境変数を設定します。 ApacheがSSLプロキシの背後にある場合に役立ちます。

`+ rpaf.conf +`を保存し、モジュールを有効にします。

sudo a2enmod rpaf

これにより、ファイル「+ ipaf.load」と「+ rpaf.conf 」のシンボリックリンクが「 mods-enabled」ディレクトリに作成されます。 次に、構成テストを行います。

sudo apachectl -t
  • Syntax OK *が返された場合、Apacheをリロードします。

sudo service apache2 reload

ブラウザでApacheのWebサイトの `+ phpinfo()+`ページにアクセスし、* PHP変数*セクションを確認します。 * REMOTE_ADDR *変数は、ローカルコンピューターのパブリックIPアドレスの変数にもな​​ります。

ステップ9-HTTPS Webサイトのセットアップ(オプション)

この手順では、Apacheでホストされている両方のドメインのSSL証明書を構成します。 NginxはSSL終了をサポートしているため、Apacheの構成ファイルを変更せずにSSLをセットアップできます。 `+ mod_rpaf +`モジュールは、必要な環境変数がApacheに設定され、SSLリバースプロキシの背後でアプリケーションがシームレスに動作するようにします。

SSL証明書とその秘密キー用のディレクトリを作成します。

sudo mkdir /etc/nginx/ssl

この記事では、有効期間が10年の自己署名SSL証明書を使用します。 `+ foobar.net `と ` test.io +`の両方の自己署名証明書を生成します。

sudo openssl req -x509 -sha256 -newkey rsa:2048 -keyout /etc/nginx/ssl/-key.pem -out /etc/nginx/ssl/-cert.pem -days 3650 -nodes
sudo openssl req -x509 -sha256 -newkey rsa:2048 -keyout /etc/nginx/ssl/-key.pem -out /etc/nginx/ssl/-cert.pem -days 3650 -nodes

毎回、証明書識別の詳細の入力を求められます。

Country Name (2 letter code) [AU]:
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:
Email Address []:

NginxからApacheへのリクエストをプロキシする `+ apache +`仮想ホストファイルを開きます。

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

ドメインごとに個別の証明書とキーがあるため、個別の + server {が必要です。 . . ドメインごとに} + `ブロック。 現在のコンテンツを削除する必要があります。終了すると、 `+ apache + vhostファイルは次のようになります。

server {
   listen 80;
   listen 443 ssl;
   server_name ;

   ssl on;
   ssl_certificate /etc/nginx/ssl/-cert.pem;
   ssl_certificate_key /etc/nginx/ssl/-key.pem;

   location / {
       proxy_pass http://:8080;
       proxy_set_header Host $host;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header X-Forwarded-Proto $scheme;
   }
}

server {
   listen 80;
   listen 443 ssl;
   server_name ;

   ssl on;
   ssl_certificate /etc/nginx/ssl/-cert.pem;
   ssl_certificate_key /etc/nginx/ssl/-key.pem;

   location / {
       proxy_pass http://:8080;
       proxy_set_header Host $host;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header X-Forwarded-Proto $scheme;
   }
}

ファイルを保存し、構成テストを実行します。

sudo service nginx configtest

テストが成功したらNginxをリロードします。

sudo service nginx reload

ブラウザで、プレフィックス「+ https:// 」を使用してApacheのドメインの1つにアクセスします:「 https:///info.php+」

画像:https://assets.digitalocean.com/articles/apache_and_nginx/7.png [phpinfo ssl]

  • PHP変数*セクションを見てください。 変数* SERVER_PORT 443 に設定され、 HTTPS on *に設定されています。これは、ApacheがHTTPS経由で直接アクセスされているかのようです。 これらの変数を設定すると、リバースプロキシの背後で動作するようにPHPアプリケーションを特別に構成する必要がなくなります。

ステップ10-Apacheへの直接アクセスのブロック(オプション)

ApacheはパブリックIPアドレスのポート「8080」でリッスンしているため、誰でもアクセスできます。 次のIPtablesコマンドをファイアウォールルールセットに組み込むことでブロックできます。

sudo iptables -I INPUT -p tcp --dport 8080 ! -s  -j REJECT --reject-with tcp-reset

赤色の例の代わりに、必ずドロップレットのIPアドレスを使用してください。 ポート + 8080 +`がファイアウォールでブロックされたら、Apacheが到達できないことをテストします。 ウェブブラウザを開き、ポート `+ 8080 +`でApacheのドメイン名の1つにアクセスしてみてください。 例: `+ http://:8080 +

ブラウザに「接続できません」または「Webページが利用できません」というエラーメッセージが表示されます。 IPtablesの「+ tcp-reset 」オプションが設定されている場合、部外者はポート「+8080」とサービスのないポートとの違いを確認できません。

注意: IPtablesルールは、デフォルトではシステムの再起動後は存続しません。 IPtablesルールを保持するには複数の方法がありますが、最も簡単なのはUbuntuのリポジトリで `+ iptables-persistent +`を使用することです。

手順11-Nginxを使用した静的ファイルの提供(オプション)

Nginxは、Apacheのドメインへのリクエストをプロキシする場合、ドメインへのすべてのファイルリクエストをApacheに送信します。 Nginxは、画像、JavaScript、スタイルシートなどの静的ファイルの提供において、Apacheよりも高速です。 そのため、このセクションでは、静的ファイルを直接提供し、PHPリクエストをApacheに送信するようにNginxの「+ apache」仮想ホストファイルを設定します。

`+ apache`仮想ホストファイルを開きます。

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

以下のコードブロックで赤で示されているように、各サーバーブロックに2つの追加の_location_ブロックを追加します。

server {
   listen 80;
   server_name test.io www.test.io;
   root /var/www/test.io;
   index index.php index.htm index.html;





   location ~ \.php$ {
       proxy_pass http://111.111.111.111:8080;
       proxy_set_header Host $host;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header X-Forwarded-Proto $scheme;
   }




}

server {
   listen 80;
   server_name foobar.net www.foobar.net;
   root /var/www/foobar.net;
   index index.php index.htm index.html;





   location ~ \.php$ {
       proxy_pass http://111.111.111.111:8080;
       proxy_set_header Host $host;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header X-Forwarded-Proto $scheme;
   }




}

`+ try_files `ディレクティブにより、Nginxは_document root_内のファイルを検索し、それらを直接提供します。 ファイルの拡張子が ` .php +`の場合、リクエストはApacheに渡されます。 ファイルが_document root_で見つからない場合でも、パーマリンクなどのアプリケーション機能が問題なく機能するように、リクエストはApacheに渡されます。

ファイルを安全にし、構成テストを実行します。

sudo service nginx configtest

テストが成功したらNginxをリロードします。

sudo service nginx reload

これが機能していることを確認するには、 `+ / var / log / apache2 `内のApacheのログファイルを調べ、 ` test.io `および ` foobar.net `の ` index.php `ファイルに対するGETリクエストを確認します。 。 このセットアップの唯一の注意点は、Apacheが静的ファイルへのアクセスを制限できないことです。 静的ファイルのアクセス制御は、Nginxの「 apache」仮想ホストファイルで設定する必要があります。

警告: `+ location〜/\.`ディレクティブは含めることが非常に重要です。 これは、Nginxが ` .htaccess `や ` .htpasswd +`のようなファイルの内容を印刷するのを防ぎます。

結論

このチュートリアルを完了すると、Nginxが `+ example.com `と ` sample.org `を提供し、Apacheが ` foobar.net `と ` test.io +`を提供するUbuntuドロップレットが1つできます。 NginxはApacheのリバースプロキシとして機能していますが、Nginxのプロキシサービスは透過的であり、Apacheのドメインへの接続はApache自体から直接提供されるようです。