Apache侵害了一个虚拟主机,其他虚拟主机已成功加载

时间:2019-07-03 10:55:58

标签: debian apache2 reverse-proxy

我的Debian服务器上的端口4200和4201上运行着一个应用程序,我正在尝试在apache2中为其创建反向代理,以便它可以在域my-domain.cz上工作

我在这里读到了几乎所有与此主题有关的问题,但是没有什么能解决我的问题。

这是启用站点的100-domain.cz.vhost的样子:

<VirtualHost server-ip:80>
    ServerName domain.cz

    ProxyPass /  "http://anotherdomain.cz:4200/"
    ProxyPassReverse /  "http://anotherdomain.cz:4200/"
</VirtualHost>


<VirtualHost server-ip:80>
    ServerName admin.domain.cz

    ProxyPass /  "http://anotherdomain.cz:4201/"
    ProxyPassReverse /  "http://anotherdomain.cz:4201/"
</VirtualHost>

似乎还可以,因为当我运行apache2ctl -S时,它会向我显示:

server-ip:80       is a NameVirtualHost
         default server domain.cz (/etc/apache2/sites-enabled/100-domain.cz.vhost:1)
         port 80 namevhost domain.cz (/etc/apache2/sites-enabled/100-domain.cz.vhost:1)
         port 80 namevhost admin.domain.cz (/etc/apache2/sites-enabled/100-domain.cz.vhost:9)

当我进入域时,它向我显示了完全不同的虚拟主机(api.domain.cz),该主机之后有另一个虚拟主机,但是只有ServerName api.domain.cz-因此它是匹配的(可能是根据我的观察)因为带有反向代理的vhost甚至没有加载(我试图注释反向代理并建立现有文档的根目录,但是它也不起作用)。

编辑:所有代理apache模块都已加载-我通过apache2ctl -M检查了它,并且还尝试将LoadModule添加到vhost文件的开头

我很乐意提供任何建议, 大卫。

1 个答案:

答案 0 :(得分:0)

恕我直言,这是因为虚拟主机是按顺序加载的,并且第一个具有最高优先级。因此,您需要以相反的顺序指定和加载它们(即api.domain.cz之前的domain.cz)。

  

基于名称的虚拟主机如果条目对应于基于名称的虚拟主机,则   名称列表包含一个或多个虚拟主机结构。此清单包含   虚拟主机的顺序与VirtualHost指令出现的顺序相同   配置文件。

     

此列表中的第一个虚拟主机(配置文件中的第一个虚拟主机带有   指定的IP地址)具有最高优先级并捕获任何   请求到未知的服务器名称或没有Host:标头的请求   -https://httpd.apache.org/docs/2.2/vhosts/details.html#hostmatching   字段。