Como dizer ao httpd para preservar a mensagem de erro com proxy?

1

Eu tenho um servidor httpd intermediando os pedidos para dois servidores tomcat diferentes. Um dos meu servidor lida com a autenticação e retorna um código de erro http específico 521 quando o usuário já tem uma sessão em execução.

Meu problema é que o httpd mapeia automaticamente esse código de erro 521 para um 500 (erro interno do servidor) e, em seguida, meu cliente não pode manipulá-lo corretamente.

Eu tentei desativar ProxyErrorOverride , para remover o /error/HTTP_INTERNAL_SERVER_ERROR.html.var , mas isso não muda nada.

Como posso pedir ao httpd para não alterar nada na mensagem com proxy?

<IfModule proxy_module>
ProxyPass       /context1      http://127.0.0.1:8001/context1
ProxyPass       /context2      http://127.0.0.1:8002/context2
ProxyPreserveHost Off
ProxyErrorOverride Off
</IfModule>

Obrigado antecipadamente

  • link
  • tomcat 7,25
  • windows 7 64 bits
por poussma 16.11.2012 / 15:06

1 resposta

2

521 não é um código de resposta HTTP válido, e o Apache estaria violando a especificação HTTP retornando-a.

Dê uma olhada no log de erros do Apache - ele pode estar realmente sufocando no código de resposta que está recebendo do backend e emitindo um erro para o cliente, não mapeando o código 5xx para 500 .

Eu sugiro strongmente contra o uso indevido de códigos de resposta HTTP como este, mas o HAProxy ou o Varnish têm a capacidade de atuar como um "tubo burro", que pode atender às suas necessidades.

    
por 17.11.2012 / 10:00