Apache ProxyPass 在同一系统上分离 VirtualHost
Apache ProxyPass to separate VirtualHost on the same system
我正在尝试解决 apache http 服务器 2.4 版上的内部 ProxyPass 设置问题。否则一切正常,只是我没能解决这个 ProxyPass 问题:
我在单个系统上运行多个基于名称的虚拟主机,example.org
作为默认主机,所有主机在端口 443 上使用 https
协议并具有有效(签名)证书:
- example.org
- host1.example.org
- host2.example.org
对于一种类型的请求,我想将内部 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 保留代理请求中的主机是未修改。因此,问题中描述的代理请求按预期工作,它们现在由所需的虚拟主机处理。
我正在尝试解决 apache http 服务器 2.4 版上的内部 ProxyPass 设置问题。否则一切正常,只是我没能解决这个 ProxyPass 问题:
我在单个系统上运行多个基于名称的虚拟主机,example.org
作为默认主机,所有主机在端口 443 上使用 https
协议并具有有效(签名)证书:
- example.org
- host1.example.org
- host2.example.org
对于一种类型的请求,我想将内部 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 保留代理请求中的主机是未修改。因此,问题中描述的代理请求按预期工作,它们现在由所需的虚拟主机处理。