Назад | Перейти на главную страницу

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

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

ProxyRequests Off

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

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

Вы можете использовать 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

Если на вашем локальном сервере есть apache, прослушивающий порты по умолчанию, вы можете указать uri ERROR на локальный хост и иметь там доступные страницы ошибок. Отменит потребность в отдельном домене / сервере

ProxyPass /ERROR http:// localhost:80/

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

ErrorDocument 503 /ERROR/custom_50x.html

Вы также можете предотвратить все /error/ запросы от проксирования на внутренний сервер:

ProxyPass /error/ !

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

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

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