概要#
Apache は Web サーバーとして、8081 ポートと 8082 ポートの両方で異なる Web サービスを提供します。
Nginx はリバースプロキシサーバーとして、HTTP ホストヘッダーのドメインに基づいてどのサーバーのどのポートにリクエストを転送するかを判断します。
以下のデモ例では、Web サーバーとリバースプロキシサーバーが同じホストで実行され、リバースプロキシのドメインは yuukiz.com に置き換えられます。実際のシナリオでは、実際の状況に応じて置き換えることができます。
操作手順#
Apache と Nginx のインストール#
CentOS では httpd をインストールする必要があります。Ubuntu システムの場合は apache2 をインストールする必要があります。
# RHベース
yum install httpd
# Debianベース
apt-get install apache2
Nginx のインストール
# RHベース
yum install nginx
# Debianベース
apt-get install nginx
サービスのインストールが完了したら、起動時に自動起動しないようにします。
systemctl disable httpd
systemctl disable apache2
systemctl disable nginx
ここで、apache2 のデフォルトのホームページも削除しました。
$ cd /var/www/html; mv index.html index.html.bak
また、仮想ホスト用のウェブサイトのルートディレクトリを作成しました。
Web サーバーのローカルパスはそれぞれ/var/www/html/8081
と/var/www/html/8082
です。
mkdir /var/www/html/8081
mkdir /var/www/html/8082
echo "8081 HTTP Server" > /var/www/html/8081/index.html
echo "8082 HTTP Server" > /var/www/html/8082/index.html
サーバーの設定#
Apache を単純な Web サーバーとして使用する場合、ポートのリッスン設定時に、元のサービスがリッスンしていた 80 ポートのコメントアウトに注意する必要があります。
Apache2 の仮想ホストの設定#
Apache2 では、設定ファイルが複数のディレクトリに分散しています。仮想ホストを設定するには、複数の設定ファイルを変更する必要があります。
仮想ホストの設定ファイルは通常、/etc/apache2/sites-available
ディレクトリにあります。このディレクトリに新しい設定ファイルを作成するか、既存の設定ファイルを変更して仮想ホストを設定できます。
以下の手順では、仮想ホストを設定するために 2 つの新しいファイルを作成する方法を示しています。
$ cat >> /etc/apache2/sites-available/8081.conf << EOF
<VirtualHost *:8081>
DocumentRoot "/var/www/html/8081"
</VirtualHost>
EOF
$ cat >> /etc/apache2/sites-available/8082.conf << EOF
<VirtualHost *:8082>
DocumentRoot "/var/www/html/8082"
</VirtualHost>
EOF
次に、コマンドを使用して新しい仮想ホストを有効にする必要があります。
$ a2ensite 8081
$ a2ensite 8082
設定ファイルを変更して、Apache2 サーバーが 8081 ポートと 8082 ポートをリッスンするようにします(同時に 80 ポートのリッスンを解除します)。
# Listen 80
Listen 8081
Listen 8082
設定ファイルを変更したら、サーバーを再起動します。ブラウザで 8081 ポートと 8082 ポートのサーバーにアクセスしてテストします。
$ systemctl restart apache2
Httpd の仮想ホストの設定#
Httpd の仮想ホストの設定方法は、Apache2 よりもはるかに簡単です。
Httpd の設定ファイルは通常、/etc/httpd/httpd.conf
にあります。設定ファイルを開き、次の内容を追加します。
# リッスンポートの設定
Listen 8081
Listen 8082
# 仮想ホストの設定
<VirtualHost *:8081>
DocumentRoot "/var/www/html/8081"
</VirtualHost>
<VirtualHost *:8082>
DocumentRoot "/var/www/html/8082"
</VirtualHost>
設定ファイルを変更したら、サーバーを再起動します。ブラウザで 8081 ポートと 8082 ポートのサーバーにアクセスしてテストします。
Nginx のリバースプロキシの設定#
Nginx の設定ファイルは通常、/etc/nginx/nginx.conf
にあります。
Nginx の設定ファイルの適切な場所に次の内容を追加します。
server {
listen 80;
server_name 8081.yuukiz.com;
location / {
proxy_pass http://localhost:8081;
}
}
server {
listen 80;
server_name 8082.yuukiz.com;
location / {
proxy_pass http://localhost:8082;
}
}
この設定では、ホストが8081.yuukiz.com
のリクエストはhttp://localhost:8081
に転送されます。
ホストが8002.yuukiz.com
のリクエストはhttp://localhost:8082
に転送されます。
設定ファイルを変更したら、サーバーを再起動します。
リバースプロキシのテスト#
ホストヘッダーの手動変更テスト#
ブラウザで直接サーバーにアクセスしてテストします。
まずは直接アクセスして、ページが Nginx のデフォルトページになることを確認します。
modHeader 拡張機能を使用して、リクエストヘッダーのホストを8081.yuukiz.com
と8082.yuukiz.com
に設定してテストします。リバースプロキシが機能するはずです。
ドメイン解決のテスト#
ホストヘッダーの変更が成功したら、ドメインプロバイダープラットフォームに移動し、ドメインに A レコードを設定して、8081.application と 8082.yuukiz.com をリバースプロキシサーバーの IP アドレスに向けます。
modHeader プラグインのホスト設定を削除します。ドメインが正常に解決されるのを待ってから、8081.yuukiz.com と 8082.yuukiz.com に直接アクセスして、Nginx のリバースプロキシを介してローカルサーバーにアクセスできることを確認します。