Apache Httpd Спеціальна помилкаDocument 404, коли ProxyPass повернув 404


9

Я маю веб-сервер Apache перед іншим сервером додатків, використовуючи проксі-пропуск. Коли запит на додаток повертає помилку 404, я хочу показати користувальницьку сторінку помилки з веб-сервера, а не ту, що надходить із сервера додатків. Я намагався встановити ErrorDocument 404 на віртуальний хост, але він не працює. Як мені це зробити? Або це неможливо?

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

  ErrorDocument 404 /error.html
</VirtualHost>

Відповіді:


12

Ви можете уникнути доступу до конкретного каталогу, вказавши !місце цілі проксі. Оскільки він діє на каталог, перейдіть error.htmlу підкаталог (ми скажемо errors) та:

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

Вибачте, можливо, у конфігурації відсутні деякі деталі, але те, що я хочу, - це зрозуміти помилку 404, повернуту з проксі-пропуску, і натомість показати error.html.
hendry.fu

1
Дякую, я знайшов спосіб перекрити, я можу просто використовувати директиву
ProxyErrorOverride

@satyavirya Хороший улов, я додам це до відповіді для майбутніх шукачів.
Шейн Мадден

дякую за підказку ProxyErrorOverride, але я виявив, що помилка при використанні Apache 2.4 до 2.4.11 вже має бути виправлена: bz.apache.org/bugzilla/show_bug.cgi?id=53420 ... можливо, єдиний обхідне рішення було б зменшити проксітайут ?!
FibreFoX

ProxyPass /errors !дійсно мені допомогли!
NullIsNot0
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.