Redirecionamento condicional do Apache httpd baseado no cabeçalho de resposta

2

Estamos usando um httpd Apache como proxy reverso. Em casos especiais, quando ocorre um erro no sistema backend, ele retorna um cabeçalho especial como X-Error = 1 (além do código de status 500).

É de alguma forma possível redirecionar essas conversas com base na presença do cabeçalho de resposta nomeado? Redirecione para uma página de erro estática, por exemplo. Infelizmente não é possível retornar um código de status diferente de 500, o que resolveria o problema descrito.

    
por ahaertig 29.06.2016 / 17:48

1 resposta

0

Desculpas como esta resposta é um pouco especulativa. Acho que isso será bem difícil de conseguir, mas aqui estão algumas soluções possíveis.

  1. Você poderia escrever seu próprio manipulador HTTP em mod_lua ou similar.
  2. Você poderia escrever um filtro externo, usando mod_external_filter para encontrar o cabeçalho e, em seguida, alterar a resposta adequadamente. Esta é essencialmente uma versão do "pobre homem" de escrever seu próprio manipulador.
  3. Você pode usar ProxyErrorOverride para alterar a página que o Apache exibe quando recebe uma resposta 500 do back-end. Se você configurá-lo para um local CGI para o Apache, poderá testar a presença do cabeçalho e exibir a resposta desejada, caso contrário, exibir uma resposta padrão.

Em teoria, todos fazem a mesma coisa. Capture a resposta antes que ela seja enviada de volta ao cliente e, em seguida, modifique-a conforme necessário.

    
por 01.10.2016 / 10:01