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>

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>

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.