Apache VirtualHosts funktionieren nicht/leiten nicht um? (Reverse-Proxy)

Apache VirtualHosts funktionieren nicht/leiten nicht um? (Reverse-Proxy)

Ich versuche, Apache als Reverse-Proxy auf einer neuen virtuellen Maschine mit Ubuntu 22.04 einzurichten. Wir haben einen vorhandenen Apache-Reverse-Proxy auf Ubuntu 18.04, auf dem alles wie vorgesehen funktioniert. Dieser neue Reverse-Proxy soll unseren alten ersetzen, aber die virtuellen Hosts scheinen nicht richtig zu funktionieren.

Ich habe Folgendes getan:

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

Ich habe die Standardseite in aktivierten Sites deaktiviert.

a2dissite 000-default.conf

Anschließend habe ich einen neuen virtuellen Host erstellt und aktiviert.

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

Es sieht aus wie das:

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

Ich habe dann den Apache neu gestartet und neu geladen.

systemctl restart apache2
systemctl reload apache2

Um zu testen, ob diese sehr einfache Konfiguration funktioniert, habe ich auf meinem Windows-PC einen Hostdateieintrag erstellt; er verweist auf meinen Apache-Server.

Wenn ich dann versuche, trupage.azmedien.ch zu erreichen, werde ich auf die Apache-Standardwebsite weitergeleitet, anstatt mich auf den richtigen Server umzuleiten (der mit ProxyPass im virtuellen Host definiert ist).

Es scheint, als würde der virtuelle Host aus irgendeinem Grund nicht erkannt? Wenn ich "trupage.azmedien.ch:80" durch "*:80" ersetze und es dann in meinem Browser öffne, funktioniert der ProxyPass. Aber das ist offensichtlich nicht das, was ich will, da es mehrere virtuelle Hosts geben wird.

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

Hier ist die Ausgabe von apache2ctl -S, 213.146.11.131 ist die IP des alten Reverse-Proxys, aber ich habe keine Ahnung, woher sie kommt oder warum sie hier angezeigt wird:

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

Antwort1

Den DNS-Namen brauchen Sie in der Zeile nicht <VirtualHost>. <VirtualHost *:80>Ist ok, Sie können mehrere davon haben, relevant ist die ServerNameDirektive.

Der Eintrag in der <VirtualHost>Zeile legt lediglich fest, auf welcher Schnittstelle Apache lauschen soll. Wenn Sie hier einen Hostnamen angeben, versucht Apache, diesen in eine IP-Adresse aufzulösen, um die richtige Schnittstelle zu finden.

verwandte Informationen