Apache Httpd Custom ErrorDocument 404 cuando ProxyPass devolvió 404


9

Tengo un servidor web Apache frente a otro servidor de aplicaciones, usando Proxy Pass. Cuando la solicitud a la aplicación devolvió el error 404, quiero mostrar una página de error personalizada del servidor web, no la que proviene del servidor de aplicaciones. Intenté configurar ErrorDocument 404 en el host virtual, pero no funciona. ¿Cómo debería hacer esto? O esto no es posible?

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

  ErrorDocument 404 /error.html
</VirtualHost>

Respuestas:


12

Puede evitar el proxy para un directorio específico especificando un !en lugar del destino proxy. Como actúa en un directorio, muévase error.htmla un subdirectorio (lo diremos errors) y:

<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>

Lo sentimos, tal vez la configuración carece de algunos detalles, pero lo que quiero es detectar el error 404 devuelto desde el pase de proxy y mostrar el error.html en su lugar.
hendry.fu

1
Gracias, encontré la forma de anular, solo puedo usar la directiva
ProxyErrorOverride

@satyavirya Buena captura, agregaré eso a la respuesta para futuros buscadores.
Shane Madden

gracias por la sugerencia a ProxyErrorOverride, pero descubrí que hay un error al usar Apache 2.4 antes de 2.4.11 que ya debería estar solucionado: bz.apache.org/bugzilla/show_bug.cgi?id=53420 ... quizás el único ¿La solución sería reducir el tiempo de espera del proxy?
FibreFoX

ProxyPass /errors !realmente me ayudó!
NullIsNot0
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.