我有一个应用程序运行在我的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)当我到达域时,它向我展示了完全不同的vhost ( api.domain.cz ),它在这个之后有另一个vhost,但只有ServerName api.domain.cz-所以它是匹配的(从我的观察来看),因为带有反向代理的vhost甚至没有被加载(我试图注释反向代理并创建一个现有的文档根,但它也不起作用)。
编辑:所有的代理apache模块都加载了-我通过apache2ctl -M检查了一下,也试着把LoadModule添加到vhost文件的最前面。
我很乐意接受你的任何建议,大卫。
发布于 2019-07-04 01:10:24
这是因为vhosts是按顺序加载的,第一个vhosts的优先级最高。因此,您需要以相反的顺序指定和加载它们(例如,在domain.cz之前使用api.domain.cz )。
基于名称的vhost如果条目对应于基于名称的vhost,则名称列表包含一个或多个vhost结构。此列表包含vhost,其顺序与VirtualHost指令在配置文件中的显示顺序相同。
此列表中的第一个vhost (配置文件中具有指定IP地址的第一个vhost )具有最高优先级,并捕获对未知服务器名称的任何请求或没有Host: header -- https://httpd.apache.org/docs/2.2/vhosts/details.html#hostmatching字段的请求。
https://stackoverflow.com/questions/56868542
复制相似问题