【问题标题】:Apache ProxyPass to separate VirtualHost on the same systemApache ProxyPass 在同一系统上分离 VirtualHost
【发布时间】:2017-04-21 08:01:55
【问题描述】:

我正在尝试解决 2.4 版 apache http 服务器上的内部 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,所以它自己请求。我可以在同一个访问日志文件中清楚地看到 两个 请求,而 example.org 的访问日志保持不变。显然,该行为会导致 http 状态 404。这在客户端也显示为主机 host1.example.org 生成的错误消息(很好),但显示了内部路径 /foo/bar不是很好) !所以我的问题显然是:

要进行哪些更改以使所需的虚拟主机在内部处理代理请求?

【问题讨论】:

  • 您好 .. 如果您查看 this room 并阅读我的 cmets,我将不胜感激。

标签: apache https proxypass virtual-hosts


【解决方案1】:

好的,显然我之前也怀疑过,我遇到了其他配置细节干扰这里的问题。我发布这个答案作为对可能偶然发现类似情况的其他人的提示:

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

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

【讨论】:

    猜你喜欢
    • 2011-02-06
    • 2014-07-17
    • 2014-12-31
    • 2016-09-03
    • 2015-05-28
    • 1970-01-01
    • 2013-11-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多