Apache Httpd Custom Error Document 404 Quando ProxyPass ha restituito 404


9

Ho un server web Apache di fronte a un altro server applicazioni, usando Proxy Pass. Quando la richiesta all'applicazione ha restituito l'errore 404, voglio mostrare una pagina di errore personalizzata dal server Web non quella che proviene dal server delle applicazioni. Ho provato a installare ErrorDocument 404 sull'host virtuale, ma non funziona. Come dovrei farlo? O questo non è possibile?

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

  ErrorDocument 404 /error.html
</VirtualHost>

Risposte:


12

È possibile evitare il proxy per una directory specifica specificando !al posto della destinazione proxy. Poiché agisce su una directory, spostati error.htmlin una sottodirectory (diremo errors) e:

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

Spiacente, forse la configurazione non ha alcuni dettagli, ma quello che voglio è catturare l'errore 404 restituito dal proxy pass e mostrare invece error.html.
hendry.fu,

1
Grazie, ho trovato il modo di ignorare, posso semplicemente usare la direttiva
ProxyErrorOverride

@satyavirya Buona cattura, lo aggiungerò alla risposta per i futuri ricercatori.
Shane Madden,

grazie per il suggerimento a ProxyErrorOverride, ma ho scoperto che c'è un bug durante l'utilizzo di Apache 2.4 prima della 2.4.11 che dovrebbe essere già risolto: bz.apache.org/bugzilla/show_bug.cgi?id=53420 ... forse l'unico soluzione alternativa sarebbe ridurre il timeout proxy ?!
FibreFoX,

ProxyPass /errors !mi ha davvero aiutato!
NullIsNot0
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.