Apache ProxyPass 在同一系统上分离 VirtualHost

Apache ProxyPass to separate VirtualHost on the same system

我正在尝试解决 apache http 服务器 2.4 版上的内部 ProxyPass 设置问题。否则一切正常,只是我没能解决这个 ProxyPass 问题:

我在单个系统上运行多个基于名称的虚拟主机,example.org 作为默认主机,所有主机在端口 443 上使用 https 协议并具有有效(签名)证书:

对于一种类型的请求,我想将内部 ProxyPass 规则设置为 example.org

https://host1.example.org/_-_-_/bar => https://example.org/foo/bar

ProxyPassReverse 不需要,因为不会返回任何结果。 (我也尝试过,但这没有任何区别):

这是主机配置的一部分的规则集 host1.example.org:

SSLProxyEngine          On
ProxyRequests           Off
ProxyVia                Off
ProxyPass               "/_-_-_/bar"      "https://example.org/foo/bar"

代理 确实 工作,它代理请求。但问题是它没有请求正确的主机!所以不是 example.org 而是最初请求的主机 host1.example.org,所以它请求自己。我可以清楚地看到 both 请求在同一个访问日志文件中,而 example.org 的访问日志保持不变。显然,这种行为会导致 http 状态 404。这也显示在客户端,作为主机 host1.example.org(很好)生成的错误消息,但显示内部路径 /foo/bar 不是 很好)!所以我的问题显然是:

要更改什么以便代理请求由所需的虚拟主机在内部处理?

好的,正如我自己之前显然也怀疑的那样,我遇到了干扰此处的其他配置细节的问题。我 post 这个答案是对其他可能遇到类似情况的人的提示:

主机配置包含的另一个配置文件设置了全局 ProxyPreserveHost On 指令。这显然导致内部代理请求具有与原始请求相同的保留主机 header,这必须导致内部请求由与原始请求相同的虚拟主机处理。

我通过将该指令移动(并复制)到特定的 <Location> 块中解决了这个问题,因此全局默认 not 保留代理请求中的主机是未修改。因此,问题中描述的代理请求按预期工作,它们现在由所需的虚拟主机处理。