Apache VirtualHosts が動作しない/リダイレクトしない? (リバース プロキシ)

Apache VirtualHosts が動作しない/リダイレクトしない? (リバース プロキシ)

新しい Ubuntu 22.04 仮想マシンで Apache をリバース プロキシとして設定しようとしています。Ubuntu 18.04 には既存の Apache リバース プロキシがあり、すべてが意図したとおりに動作しています。この新しいリバース プロキシは古いプロキシを置き換えるはずですが、仮想ホストが正しく動作していないようです。

私は次のことを行いました:

apt-get update
apt-get upgrade
apt-get install apache2
a2enmod proxy
a2enmod proxy_http
a2enmod proxy_balancer
a2enmod lbmethod_byrequests

サイト対応のデフォルトページを無効にしました。

a2dissite 000-default.conf

次に、新しい仮想ホストを作成して有効にしました。

vi 001-trupage.azmedien.ch.conf
a2ensite 001-trupage.azmedien.ch.conf

次のようになります:

<VirtualHost trupage.azmedien.ch:80>
    ServerName trupage.azmedien.ch
    ProxyPreserveHost On
    ProxyPass / http://10.200.0.130/
    ProxyPassReverse / http://10.200.0.130/
</VirtualHost>

その後、Apache を再起動してリロードしました。

systemctl restart apache2
systemctl reload apache2

この非常に基本的な構成が機能するかどうかをテストするために、Windows PC にホスト ファイル エントリを作成しました。このエントリは Apache サーバーを指しています。

その後、trupage.azmedien.ch にアクセスしようとすると、正しいサーバー (仮想ホストの ProxyPass で定義されている) にリダイレクトされるのではなく、Apache のデフォルト Web サイトに移動します。

何らかの理由で仮想ホストが認識されないようです。「trupage.azmedien.ch:80」を「*:80」に置き換えてブラウザで開くと、ProxyPass が機能します。しかし、明らかに、複数の仮想ホストが存在するため、これは私が望んでいることではありません。

<VirtualHost *:80>
    ServerName trupage.azmedien.ch
    ProxyPreserveHost On
    ProxyPass / http://10.200.0.130/
    ProxyPassReverse / http://10.200.0.130/
</VirtualHost>

以下は からの出力ですapache2ctl -S。213.146.11.131 は古いリバース プロキシの IP ですが、それがどこから来ているのか、なぜここに表示されているのかはわかりません。

root@azprox10:~# apache2ctl -S
AH00558: apache2: Could not reliably determine the server's fully qualified doma                                                                                                                               in name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress th                                                                                                                      is message
VirtualHost configuration:
213.146.11.131:80      is a NameVirtualHost
         default server localhost (/etc/apache2/sites-enabled/001-trupage.azmedi                                                                                                                               
         en.ch.conf:1)
         port 80 namevhost localhost (/etc/apache2/sites-enabled/001-trupage.azm                                                                                                                               
         edien.ch.conf:1)
         port 80 namevhost opvsg.chmedia.ch (/etc/apache2/sites-enabled/002-opvs                                                                                                                               
         g.chmedia.ch.conf:1)
ServerRoot: "/etc/apache2"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/var/log/apache2/error.log"
Mutex rewrite-map: using_defaults
Mutex proxy: using_defaults
Mutex default: dir="/var/lock/apache2" mechanism=fcntl
Mutex watchdog-callback: using_defaults
PidFile: "/var/run/apache2/apache2.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="www-data" id=33
Group: name="www-data" id=33

答え1

行に DNS 名は必要ありません<VirtualHost><VirtualHost *:80>問題ありません。複数指定できます。関連するのはディレクティブですServerName

この行のエントリは<VirtualHost>、Apache がリッスンするインターフェースのみを定義します。ここにホスト名を入力すると、Apache はそれを IP アドレスに解決して正しいインターフェースを見つけようとします。

関連情報