Apache Httpd Custom ErrorDocument 404 Wenn ProxyPass 404 zurückgibt


9

Ich habe einen Apache-Webserver vor einem anderen Anwendungsserver, der Proxy Pass verwendet. Wenn die Anforderung an die Anwendung den Fehler 404 zurückgibt, möchte ich eine benutzerdefinierte Fehlerseite vom Webserver anzeigen, die nicht vom Anwendungsserver stammt. Ich habe versucht, das ErrorDocument 404 auf dem virtuellen Host einzurichten, aber es funktioniert nicht. Wie soll ich das machen? Oder ist das nicht möglich?

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

  ErrorDocument 404 /error.html
</VirtualHost>

Antworten:


12

Sie können das Proxys für ein bestimmtes Verzeichnis vermeiden, indem Sie !anstelle des Proxy-Ziels ein Proxy-Ziel angeben . Da es auf ein Verzeichnis wirkt, wechseln Sie error.htmlin ein Unterverzeichnis (wir werden sagen errors) und:

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

Entschuldigung, vielleicht fehlen der Konfiguration einige Details, aber ich möchte den vom Proxy-Pass zurückgegebenen Fehler 404 abfangen und stattdessen die error.html anzeigen.
hendry.fu

1
Danke, ich habe den Weg zum Überschreiben gefunden. Ich kann einfach die ProxyErrorOverride-Direktive verwenden
hendry.fu

@satyavirya Guter Fang, das werde ich der Antwort für zukünftige Suchende hinzufügen.
Shane Madden

Vielen Dank für den Hinweis auf ProxyErrorOverride, aber ich habe festgestellt, dass es einen Fehler bei der Verwendung von Apache 2.4 vor 2.4.11 gibt, der bereits behoben werden sollte: bz.apache.org/bugzilla/show_bug.cgi?id=53420 ... vielleicht der einzige Problemumgehung wäre, das Proxy-Timeout zu reduzieren?!
FibreFoX

ProxyPass /errors !hat mir wirklich geholfen!
NullIsNot0
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.