Apache Httpd Custom ErrorDocument 404 Ketika ProxyPass mengembalikan 404

9

Saya memiliki server web Apache di depan server aplikasi lain, menggunakan Proxy Pass. Ketika permintaan untuk aplikasi mengembalikan kesalahan 404, saya ingin menampilkan halaman kesalahan khusus dari server web bukan yang datang dari server aplikasi. Saya telah mencoba men-setup ErrorDocument 404 pada virtual host, tetapi tidak berhasil. Bagaimana saya harus melakukan ini? Atau ini tidak mungkin?

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

  ErrorDocument 404 /error.html
</VirtualHost>
hendry.fu
sumber

Jawaban:

12

Anda dapat menghindari proksi untuk direktori tertentu dengan menentukan !di tempat target proxy. Karena ini bertindak pada direktori, pindah error.htmlke subdirektori (kami akan mengatakan errors), dan:

<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
sumber
Maaf, mungkin konfigurasi kurang detail, tetapi yang saya inginkan adalah untuk menangkap kesalahan 404 yang dikembalikan dari pass proxy dan sebagai gantinya menunjukkan error.html.
hendry.fu
1
Terima kasih, saya menemukan cara untuk mengesampingkan, saya hanya dapat menggunakan arahan
ProxyErrorOverride
@satyavirya Bagus, saya akan menambahkan itu ke jawaban untuk pencari masa depan.
Shane Madden
terima kasih atas petunjuknya ke ProxyErrorOverride, tetapi saya menemukan ada bug saat menggunakan Apache 2.4 sebelum 2.4.11 yang seharusnya sudah diperbaiki: bz.apache.org/bugzilla/show_bug.cgi?id=53420 ... mungkin satu-satunya solusi akan mengurangi proxytimeout ?!
FibreFoX
ProxyPass /errors !benar-benar membantu saya!
NullIsNot0