Erro personalizado Apache Httpd 404 quando o ProxyPass retornou 404

9

Eu tenho um servidor web Apache na frente de outro servidor de aplicativos, usando o Proxy Pass. Quando a solicitação para o aplicativo retornou o erro 404, desejo mostrar a página de erro personalizada do servidor da Web, não a que veio do servidor de aplicativos. Eu tentei configurar o ErrorDocument 404 no host virtual, mas ele não funciona. Como devo fazer isso? Ou isso não é possível?

<VirtualHost *:80>
  ServerName servername
  DocumentRoot /somepath/
  ProxyPass / http://localhost:8080/someapp/
  ProxyPassReverse / http://localhost:8080/someapp/

  ErrorDocument 404 /error.html
</VirtualHost>
hendry.fu
fonte

Respostas:

12

Você pode evitar o proxy de um diretório específico especificando um !local no destino do proxy. Como ele atua em um diretório, vá error.htmlpara um subdiretório (diremos errors) e:

<VirtualHost *:80>
  ServerName servername
  DocumentRoot /somepath/
  ProxyPass /errors !
  ProxyPass / http://localhost:8080/someapp/
  ProxyPassReverse / http://localhost:8080/someapp/
  ProxyErrorOverride On
  ErrorDocument 404 /errors/error.html
</VirtualHost>
Shane Madden
fonte
Desculpe, talvez a configuração não tenha alguns detalhes, mas o que eu quero é capturar o erro 404 retornado da passagem do proxy e mostrar o error.html.
precisa saber é o seguinte
1
Obrigado, eu encontrei o caminho para substituir, eu posso apenas usar a diretiva
ProxyErrorOverride
@satyavirya Boa captura, acrescentarei isso à resposta para futuros pesquisadores.
Shane Madden
obrigado pela dica para ProxyErrorOverride, mas descobri que há um erro ao usar o Apache 2.4 antes da 2.4.11 que já deve ser corrigido: bz.apache.org/bugzilla/show_bug.cgi?id=53420 ... talvez o único solução alternativa seria reduzir o proxytimeout ?!
FibreFoX 17/04/2015
ProxyPass /errors !realmente me ajudou!
NullIsNot0