Страница ошибки обратного прокси-сервера 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
Короче:
- Добавьте исключение прокси для некоторых псевдонимов, таких как http_errors (должно быть перед фактическим правилом прокси)
- Сопоставить псевдоним с реальным путем (должен существовать и быть доступным для Apache)
- Сопоставить данный код состояния 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