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

Обратный прокси-сервер не обслуживает локальные страницы ошибок

У меня есть сервер Apache 2.4 на Windows Server 2008 R2, который я использую в качестве обратного прокси. Он работает нормально и обслуживает около 15 виртуальных хостов. Всякий раз, когда хост выходит из строя, я хочу отобразить веб-страницу, указывающую, что сервер временно не работает. Я поместил настраиваемый файл ошибок в папку в папке htdocs под названием errors. У меня есть следующие директивы в файле httpd.conf:

ErrorDocument 500 /errors/default.html
ErrorDocument 502 /errors/default.html
ErrorDocument 503 /errors/default.html
ErrorDocument 504 /errors/default.html
ErrorDocument 400 /errors/default.html
ErrorDocument 404 /errors/default.html
ErrorDocument 408 /errors/default.html

<Directory "C:/Program Files/Apache Software Foundation/Apache2.4/htdocs/errors"> 
Order deny,allow 
Allow from all 
</Directory> 

Я выключил один из прокси-серверов, чтобы проверить страницу с ошибкой, и увидел следующее:

Служба недоступна. Сервер временно не может обработать ваш запрос из-за простоя в обслуживании или проблем с производительностью. Пожалуйста, попробуйте позже.

Кроме того, при попытке использовать ErrorDocument для обработки запроса произошла ошибка 503 Service Unavailable.

Если я использую текстовое сообщение об ошибке, например «Сервер в настоящее время отключен», я ВСЕГДА вижу этот текст. Если я ссылаюсь на внешний веб-сервер для обслуживания страницы, я вижу страницу, обслуживаемую этим сервером. Это как если бы сервер Apache ТОЛЬКО проксировал запросы и не мог обслуживать локальные страницы ошибок.

Я предполагаю, что мне нужно добавить или изменить запись виртуального хоста, чтобы сервер Apache мог обслуживать локальную страницу (страницы ошибок), но, поскольку на сервер ссылается только IP в DNS, я не уверен, как это сделать (это с использованием именованных хостов). Я просто предположил, что страницы ошибок будут правильно обрабатываться Apache без дополнительной настройки (помимо разрешения разрешений на папку со страницами ошибок и ссылки на них в записях ErrorDocument).

Что я пропустил? Настройка пользовательских документов об ошибках казалась простой, но я не могу обслуживать их через прокси.

Прямо из Документы Apache

Если вы используете mod_proxy, вы можете включить ProxyErrorOverride, чтобы вы могли отправлять настраиваемые сообщения об ошибках от имени ваших серверов Origin. Если вы не включите ProxyErrorOverride, Apache httpd не будет создавать настраиваемые документы об ошибках для проксируемого содержимого.

Также с помощью ErrorDocument 503 /errors/default.html apache считает, что он находится на исходном сервере, а затем выдает собственную ошибку, говоря, что он также не может его найти.