我们使用 Apache httpd 作为反向代理。在特殊情况下,当后端系统发生错误时,它会返回一个特殊的标头,例如X-错误=1(除了状态代码 500)。
是否有可能根据命名响应标头的存在重定向这些响应?例如,重定向到静态错误页面。不幸的是,无法返回不同于 500 的状态代码,这将解决所述问题。
答案1
抱歉,这个答案有些推测性。我认为这很难实现,但这里有一些可能的解决方案。
- 您可以编写自己的 HTTP 处理程序
mod_lua
或类似程序。 - 您可以编写一个外部过滤器,使用它
mod_external_filter
来查找标头,然后适当地更改响应。这本质上是编写您自己的处理程序的“穷人”版本。 - 您可能能够使用
ProxyErrorOverride
它来更改 Apache 从后端获得 500 响应时显示的页面。如果您将其设置为 Apache 本地的 CGI,则可以测试标头是否存在并显示所需的响应,否则显示默认响应。
理论上,它们都做同样的事情。在将响应发送回客户端之前捕获它,然后根据需要进行修改。