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

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

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

3
задан 29 June 2016 в 18:48
1 ответ

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

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

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

0
ответ дан 3 December 2019 в 08:01

Теги

Похожие вопросы