Yuuki

Yuuki's Blog

Hacker. Code Enthusiast.
github
bilibili
twitter

ApacheとNginxを使用してテストリバースプロキシをデプロイする

概要#

Apache は Web サーバーとして、8081 ポートと 8082 ポートの両方で異なる Web サービスを提供します。

20240416_114107

Nginx はリバースプロキシサーバーとして、HTTP ホストヘッダーのドメインに基づいてどのサーバーのどのポートにリクエストを転送するかを判断します。

20240416_114250

以下のデモ例では、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 ポートのサーバーにアクセスしてテストします。

20240416_104820

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 のデフォルトページになることを確認します。

20240416_111512

modHeader 拡張機能を使用して、リクエストヘッダーのホストを8081.yuukiz.com8082.yuukiz.comに設定してテストします。リバースプロキシが機能するはずです。

20240416_112639

20240416_112057

ドメイン解決のテスト#

ホストヘッダーの変更が成功したら、ドメインプロバイダープラットフォームに移動し、ドメインに A レコードを設定して、8081.application と 8082.yuukiz.com をリバースプロキシサーバーの IP アドレスに向けます。

image

modHeader プラグインのホスト設定を削除します。ドメインが正常に解決されるのを待ってから、8081.yuukiz.com と 8082.yuukiz.com に直接アクセスして、Nginx のリバースプロキシを介してローカルサーバーにアクセスできることを確認します。

20240416_112824

20240416_112900

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。