两个 Web 应用程序的 Apache 反向代理:一个在本地主机上,另一个在远程计算机上

两个 Web 应用程序的 Apache 反向代理:一个在本地主机上,另一个在远程计算机上

我有两个 Web 应用程序:Jira 和 Mercurial。它们以前位于同一台服务器上Dual Host,但后来我将 Mercurial 移至Mercurial Host。Jira 仍托管在 上Dual Host

Dual Host有一个Apache 2.2.22服务器曾经托管 Mercurial,但现在将作为反向代理。

在我的域名服务器上,我已经设置jira为指向 的Dual HostIP 和mercurial指向Mercurial Host的 IP。

人们过去通过 来访问 Jira http://dualhost:4040/,通过 来访问 Mercurial http://dualhost/

我设置了一个反向代理来代理对http://dualhost/to 的请求http://mercurial/(这样就可以在各个地方找到提交的现有链接)。下面的配置可以正常工作:

<VirtualHost *:80>
    ServerName dualhost
    ProxyPreserveHost On

    ProxyPass / http://mercurial:80/
    ProxyPassReverse / http://mercurial:80/
</VirtualHost>

现在我想代理请求http://jirahttp://dualhost:4040我一直被代理到 Mercurial。

原因是我想稍后将 Jira 移到新服务器,URL 越早“正确”越好。

我将该规则设置为:

<VirtualHost jira:80>
    ServerName jira
    ProxyPreserveHost On

    ProxyPass / http://localhost:4040/
    ProxyPassReverse / http://localhost:4040/
</VirtualHost>

我正在看Apache 2.2文档,看起来应该可以工作。我做错了什么?

答案1

<VirtualHost *:80>尝试在您的虚拟主机配置中使用jira

虚拟主机匹配是顺序敏感的,因此如果 a<VirtualHost *:80>在 a 之前<VirtualHost jira:80>,则第二个将永远不会匹配。如果您使用多个不同的文件,情况也是如此,conf.d/*.conf因为 apache 会按字母顺序加载这些文件。

从您的示例中,可以假设您将使用名为conf.d/dualhost.conf和的文件conf.d/jira.conf。由于dualhost按字母顺序排列在 之前jira,因此第二个永远不会匹配。

相关内容