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>

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>

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.