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.