Niestandardowy błąd Apache Httpd Dokument 404, gdy ProxyPass zwrócił 404

9

Mam serwer WWW Apache przed innym serwerem aplikacji, używając Proxy Pass. Gdy żądanie do aplikacji zwróciło błąd 404, chcę wyświetlić niestandardową stronę błędu z serwera WWW, a nie tę, która pochodzi z serwera aplikacji. Próbowałem skonfigurować ErrorDocument 404 na hoście wirtualnym, ale to nie działa. Jak mam to zrobić? Czy to nie jest możliwe?

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

  ErrorDocument 404 /error.html
</VirtualHost>
hendry.fu
źródło

Odpowiedzi:

12

Możesz uniknąć proxy dla określonego katalogu, określając !miejsce docelowe proxy. Ponieważ działa on na katalog, przejdź error.htmldo podkatalogu (powiemy errors) i:

<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
źródło
Przykro mi, może konfiguracja nie ma pewnych szczegółów, ale chcę złapać błąd 404 zwrócony z przebiegu proxy i zamiast tego wyświetlić error.html.
hendry.fu
1
Dzięki, znalazłem sposób na przesłonięcie, mogę po prostu użyć dyrektywy
ProxyErrorOverride
@satyavirya Dobry połów, dodam to do odpowiedzi dla przyszłych poszukiwaczy.
Shane Madden,
dzięki za podpowiedź do ProxyErrorOverride, ale odkryłem, że podczas używania Apache 2.4 przed 2.4.11 występuje błąd, który powinien już zostać naprawiony: bz.apache.org/bugzilla/show_bug.cgi?id=53420 ... może jedyny obejściem byłoby skrócenie czasu oczekiwania ?!
FibreFoX
ProxyPass /errors !naprawdę mi pomógł!
NullIsNot0