【问题标题】:mod_proxy ProxyErrorOverride On always discards response bodymod_proxy ProxyErrorOverride On 总是丢弃响应正文
【发布时间】:2019-01-23 14:03:47
【问题描述】:

我遇到的问题可能只是对该​​功能的工作原理的根本误解,但我还是想问一下。我正在尝试从代理模块启用ProxyErrorOverride 指令,同时使用两个反向代理(一个在根目录,一个在/api)。我们希望能够为一系列 4xx 和 5xx 状态代码返回自定义错误页面(通过 ErrorDocument 指令)。然而,我们希望能够将一些状态代码作为从 API 显式发送的错误传递给我们的 Web 应用程序。

目前,每当我打开 ProxyErrorOverride 指令时,我们确实会看到某些状态代码被路由到我们的通用错误页面,但我们尝试通过的状态代码(通过不声明 ErrorDocument 指令)似乎返回正确的状态代码(例如:418),但使用通用的 apache 响应主体,其中包含“418 Unknown reason contact your admin@domain.com..blah blah”之类的内容。

有什么方法可以告诉 Apache 我想通过代理保留响应正文,还是它总是被 Apache 丢弃?

在某些情况下,我使用的是官方的 2.4.33 httpd docker base,即使是最基本的 Apache 配置也能够重现此行为。我尝试单步执行一些源代码(我没有写很多 C),据我所知,丢弃响应主体似乎是默认行为,唯一的覆盖是自定义响应。

希望对此进行澄清。是否可以通过将 ProxyErrorOverride 指令设置为 On 的错误消息?

我看到了这个帖子: Make apache mod_proxy ProxyErrorOverride include original page contents with mod_include

这似乎也暗示只有 SSI 响应可以使用ProxyErrorOverride On 提供服务,是否有任何可以引用的文档或资源来证实这一点?有任何基于 Apache 的解决方法吗?

【问题讨论】:

    标签: apache mod-proxy


    【解决方案1】:

    据我了解,ProxyErrorOverride 会覆盖从400 上方的来源收到的任何响应。

    不能排除特定的。

    【讨论】:

    • 你会认为,如果我不指定一个 html 覆盖(一个错误页面),那么让它与现有的请求正文一起流动是有意义的。不幸的是,你的发现是是的,并且这本身没有“解决方案”。我们最终编写了自己的成功代码以将其视为“错误”,并追溯更新了我们的前端 http 客户端以将该代码解释为错误,因此我们不必重构任何东西。
    猜你喜欢
    • 2018-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-09
    • 1970-01-01
    • 1970-01-01
    • 2017-03-14
    • 2017-10-15
    相关资源
    最近更新 更多