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 时,它会引导我进入 Apache 默认网站,而不是实际将我重定向到正确的服务器(在虚拟主机中使用 ProxyPass 定义)。

似乎出于某种原因它无法识别虚拟主机?当我将“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 地址以找到正确的接口。

相关内容