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>

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>

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.