Мы используем Apache httpd в качестве обратного прокси. В особых случаях, когда в бэкэнд-системе возникает ошибка, она возвращает специальный заголовок, например X-Error = 1 (помимо кода состояния 500).
Можно ли каким-либо образом перенаправить эти ответы на основе наличия именованного заголовка ответа? Например, перенаправление на страницу статической ошибки. К сожалению, невозможно вернуть код состояния, отличный от 500, что позволило бы решить описанную проблему.
Прошу прощения, поскольку этот ответ является несколько умозрительным. Я думаю, этого будет довольно сложно достичь, но вот несколько возможных решений.
mod_lua
или аналогичном. mod_external_filter
, чтобы найти заголовок и затем соответствующим образом изменить ответ. По сути, это "бедная" версия написания собственного обработчика. ProxyErrorOverride
для изменения страницы, отображаемой Apache, когда он получает ответ 500 от бэкэнда. Если вы установите для него значение CGI, локальное для Apache, вы можете проверить наличие заголовка и отобразить желаемый ответ, в противном случае отобразить ответ по умолчанию. Теоретически все они делают одно и то же. Захватите ответ, прежде чем он будет отправлен обратно клиенту, а затем измените его при необходимости.