Назад | Перейти на главную страницу

Условное перенаправление Apache httpd на основе заголовка ответа

Мы используем Apache httpd в качестве обратного прокси. В особых случаях, когда в бэкэнд-системе возникает ошибка, он возвращает специальный заголовок, например X-ошибка = 1 (помимо кода состояния 500).

Можно ли каким-то образом перенаправить эти ответы на основе наличия именованного заголовка ответа? Например, перенаправление на страницу статической ошибки. К сожалению, невозможно вернуть код состояния, отличный от 500, что решило бы описанную проблему.

Прошу прощения, поскольку этот ответ несколько умозрительный. Думаю, этого будет довольно сложно добиться, но вот несколько возможных решений.

  1. Вы можете написать свой собственный обработчик HTTP в mod_lua или похожие.
  2. Вы можете написать внешний фильтр, используя mod_external_filter чтобы найти заголовок, а затем соответствующим образом изменить ответ. По сути, это вариант написания собственного обработчика для бедных людей.
  3. Вы могли бы использовать ProxyErrorOverride для изменения страницы, отображаемой Apache, когда он получает ответ 500 от бэкэнда. Если вы установите для него CGI, локальный для Apache, вы можете проверить наличие заголовка и отобразить желаемый ответ, в противном случае отобразить ответ по умолчанию.

Теоретически все они делают одно и то же. Захватите ответ, прежде чем он будет отправлен обратно клиенту, а затем измените его при необходимости.