Apache httpd条件redirect基于响应头

我们使用Apache httpd作为反向代理。 在特殊情况下,当后端系统发生错误时,它会返回一个特殊的标题,如X-Error = 1 (状态码500除外)。

是否有可能基于命名响应头的存在来redirect这些回复? 例如redirect到一个静态的错误页面。 不幸的是,不可能返回不同于500的状态码,这将解决所描述的问题。

道歉,这个答案有点推测。 我认为这将是很难实现的,但这里有一些可能的解决scheme。

  1. 你可以在mod_lua或类似的地方编写你自己的HTTP处理程序。
  2. 你可以写一个外部filter,使用mod_external_filter来查找头,然后适当地改变响应。 这本质上是编写你自己的处理程序的“穷人”版本。
  3. 您可能可以使用ProxyErrorOverride更改Apache从后端获取500响应时显示的页面。 如果将其设置为Apache的本地CGI,则可以testing标题的存在并显示所需的响应,否则显示默认响应。

理论上讲,这些都是一样的。 在将响应发送回客户端之前捕获响应,然后根据需要对其进行修改。