Я сталкиваюсь с различными проблемами, пытаясь добавить пользовательские документы ErrorDocuments на свой сервер.
Я использую балансировщик прокси для распределения нагрузки между двумя экземплярами Zope и несколько простых правил перезаписи, чтобы сопоставить мой домен с локальными экземплярами zope. Я почти уверен, что Zope не проблема, но упомянули об этом, чтобы объяснить, на что перенаправляет балансировщик.
Я пробовал число предложений, но наиболее близкое, что я могу найти, приведено ниже и приводит к ошибке:
«Firefox обнаружил, что сервер перенаправляет запрос на этот адрес так, что никогда не будет завершен».
Другие варианты приводят к:
"Сервер временно не может обработать ваш запрос из-за простоя из-за технического обслуживания или проблем с производительностью. Повторите попытку позже.
Кроме того, при попытке использовать ErrorDocument для обработки запроса произошла ошибка 503 Service Tempoporary Unavailable ».
Если я включу простой
ErrorDocument 503 Здравствуйте!
Он отлично смотрится.
Что я делаю не так? Я беспокоюсь, что это может быть связано с тем, что балансировщик / перезапись «мешает» пользовательским ошибкам? Или у меня неправильно установлен DocumentRoot?
Остальная часть этой конфигурации работает нормально без пользовательских ошибок.
<VirtualHost>
VirtualHost XXX.XXX.XXX.XXX:80>
ServerAdmin webmaster@localhost
ServerName sub.domain.com
<Proxy balancer://domain_dev>
BalancerMember http://XXX.XXX.XXX.XXX:81
BalancerMember http://XXX.XXX.XXX.XXX:82
</Proxy>
RewriteEngine On
RewriteRule ^(.*)$ balancer://domain_dev$1 [P,L]
<Location />
Order allow,deny
Allow from all
</Location>
</VirtualHost>
Listen 81
Listen 82
<VirtualHost XXX.XXX.XXX.XXX:81>
CustomLog /var/log/apache2/domain-dev-1.log combined
ErrorLog /var/log/apache2/domain-dev-error-1.log
ErrorDocument 503 http://sub.domain.com/custom-errors/customerror.html
Alias /customerrors /var/www/custom-errors/
RewriteEngine On
RewriteRule ^(.*)$ http://localhost:6080/++skin++SandboxSkin/site/++vh++http:sub.domain.com:80/++$1 [P,L]
RewriteLog /var/log/apache2/domain-dev-rewrite-1.log
RewriteLogLevel 0
<Location />
Order allow,deny
Allow from all
</Location>
</VirtualHost>
<VirtualHost XXX.XXX.XXX.XXX:82>
CustomLog /var/log/apache2/domain-dev-2.log combined
ErrorLog /var/log/apache2/domain-dev-error-2.log
RewriteEngine On
RewriteRule ^(.*)$ http://localhost:6081/++skin++SandboxSkin/site/++vh++http:sub.domain.com:80/++$1 [P,L]
RewriteLog /var/log/apache2/domain-dev-rewrite-2.log
RewriteLogLevel 0
<Location />
Order allow,deny
Allow from all
</Location>
</VirtualHost>
Установив LogLevel Debug, я обнаружил:
[Mon Sep 14 19:26:06 2009] [debug] proxy_util.c(2015): proxy: connected /++skin++SandboxSkin/site/++vh++http:sub.domain.com:80/++/custom-errors/customerror.html to localhost:6080
Это подтвердило, что прокси-сервер пытался обработать ошибку с местоположения автономных серверов.
Добавление:
RewriteCond %{REQUEST_URI} !^/custom-errors/
Остановлен прокси-сервер, перезаписывающий любые перенаправления с каталогами custom-errors в запросе.
После этого следующее упрощенное правило ErrorDocument работало нормально:
DocumentRoot "/var/www"
ErrorDocument 503 "/custom-errors/customerror.html"