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>
hendry.fu
fuente

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>
Shane Madden
fuente
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