我的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文件的开头
我很乐意提供任何建议, 大卫。
答案 0 :(得分:0)
恕我直言,这是因为虚拟主机是按顺序加载的,并且第一个具有最高优先级。因此,您需要以相反的顺序指定和加载它们(即api.domain.cz
之前的domain.cz
)。
基于名称的虚拟主机如果条目对应于基于名称的虚拟主机,则 名称列表包含一个或多个虚拟主机结构。此清单包含 虚拟主机的顺序与VirtualHost指令出现的顺序相同 配置文件。
此列表中的第一个虚拟主机(配置文件中的第一个虚拟主机带有 指定的IP地址)具有最高优先级并捕获任何 请求到未知的服务器名称或没有Host:标头的请求 -https://httpd.apache.org/docs/2.2/vhosts/details.html#hostmatching 字段。