Страница ошибки обратного прокси-сервера Apache, когда прокси-сервер не работает

Я использую Apache2 в качестве обратного прокси для tomcat, моя конфигурация примерно такая:

ProxyRequests Off

ProxyPass        / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/

Мой вопрос: могу ли я настроить Apache для отображения страницы вежливости (статическая страница HTML "в стадии разработки"), когда Tomcat не работает?

6 ответов

Решение

Для этого вы можете использовать директиву Apache ErrorDocument. Вы должны использовать URL-адрес, чтобы указать на свой ErrorDocument, в противном случае, если вы используете ссылку на файловую систему, вы получите дополнительные 503 при попытке ее найти.

ErrorDocument 503 http://somehost.tld/errors/503.html

Вот решение без дополнительного сервера или другого порта:

ProxyPass /http_errors/ !

#Actual proxy config, must be below exception!
ProxyPass / ajp://myserver:12345/

Alias /http_errors/ /var/www/http/
ErrorDocument 503 /http_errors/503.html

Короче:

  1. Добавьте исключение прокси для некоторых псевдонимов, таких как http_errors (должно быть перед фактическим правилом прокси)
  2. Сопоставить псевдоним с реальным путем (должен существовать и быть доступным для Apache)
  3. Сопоставить данный код состояния HTTP с определенным файлом в псевдониме

Так что для настройки выше, файл, показанный в случае проблемы, является /var/www/http/503.html.

Apache выдаст ошибку 503 "Служба недоступна", если не удается подключиться к Tomcat. Вы можете просто создать "красивую" страницу ошибки 503.

ErrorDocument 503 /var/www/html/error/gonefishing.html

Вы также можете предотвратить все /error/ запросы от прокси на бэкэнд-сервер:

ProxyPass /error/ !

ProxyPass        / http:// localhost:8080/
ProxyPassReverse / http:// localhost:8080/

Если на вашем локальном сервере Apache прослушивает порты по умолчанию, вы можете указать ОШИБКУ URI на локальный хост и иметь там настраиваемые страницы ошибок. Отменит потребность в отдельном домене / сервере

ProxyPass /ERROR http:// localhost:80/

ProxyPass        / http:// localhost:8080/
ProxyPassReverse / http:// localhost:8080/

ErrorDocument 503 /ERROR/custom_50x.html

Порядок операторов ProxyPass, указанный в информации @snyman, очень важен. Ошибка proxypass должна быть первым оператором proxypass для виртуального хоста до того, как будут написаны любые другие операторы proxypass.

это мой опыт работы на centos 7 с apache 2.4 и tomcat7

Другие вопросы по тегам