我遇到了各种问题,试图将自定义ErrorDocuments添加到我的服务器。
我使用代理平衡器来共享两个Zope实例之间的负载和一些简单的重写规则,以将我的域映射到本地zope实例。 我很确定Zope 不是问题,但已经提到它解释平衡器redirect到什么。
我已经尝试了一些build议,但是我能得到的“最接近的”包含在下面,并导致错误:
“Firefox已经检测到服务器正以一种永远不会完成的方式redirect这个地址的请求。”
其他变化导致:
“由于维护停机或容量问题,服务器暂时无法处理您的请求,请稍后重试。
此外,尝试使用ErrorDocument处理请求时遇到503服务暂时不可用错误。
如果我包括一个简单的
ErrorDocument 503你好
它呈现很好。
我究竟做错了什么? 我担心这可能是与平衡器/重写获取自定义错误的方式? 或者说我的DocumentRoot设置不正确?
这个configuration的其余部分运行正常,没有自定义错误。
<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>
设置LogLeveldebugging我发现:
[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/
停止代理重写任何redirect与请求中的“自定义错误”目录。
之后,以下简化的ErrorDocument规则工作正常:
DocumentRoot "/var/www" ErrorDocument 503 "/custom-errors/customerror.html"