【问题标题】:Apache ingores one vhost, others are loaded successfulyApache 忽略一个虚拟主机,其他虚拟主机加载成功
【发布时间】:2019-11-14 01:12:52
【问题描述】:

我有一个应用程序在我的 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 - 所以它是匹配的(可能来自我的观察)因为带有反向代理的虚拟主机甚至没有加载(我试图评论反向代理并创建一个现有的文档根,但它也不起作用)。

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

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

【问题讨论】:

    标签: debian apache2 reverse-proxy


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2014-11-10
      • 2010-10-21
      • 2018-02-08
      • 1970-01-01
      • 2012-12-03
      • 2011-06-19
      • 2010-10-07
      • 1970-01-01
      • 2016-10-12
      相关资源
      最近更新 更多