首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apache访问一个vhost,其他vhost已成功加载

Apache访问一个vhost,其他vhost已成功加载
EN

Stack Overflow用户
提问于 2019-07-03 18:55:59
回答 1查看 45关注 0票数 1

我有一个应用程序运行在我的debian服务器上的端口4200和4201,我正试图在apache2中为它做一个反向代理,这样它就可以在域my-domain.cz上运行

我在这里读到了几乎所有关于这个话题的问题,但没有什么能解决我的问题。

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

代码语言:javascript
复制
<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时,它会显示:

代码语言:javascript
复制
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文件的最前面。

我很乐意接受你的任何建议,大卫。

EN

回答 1

Stack Overflow用户

发布于 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字段的请求。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56868542

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档