我在尝试将自定义 ErrorDocuments 添加到我的服务器时遇到了各种问题。
我正在使用代理平衡器在两个 Zope 实例之间共享负载,并使用一些简单的重写规则将我的域映射到本地 zope 实例。我很确定 Zope不是问题,但提到它是为了解释平衡器重定向到什么。
我试过数字的建议,但我能得到的“最接近”的建议如下,并导致错误:
“Firefox 检测到服务器正在以永远无法完成的方式重定向此地址的请求。”
其他变化导致:
“由于维护停机或容量问题,服务器暂时无法满足您的请求。请稍后再试。
此外,尝试使用 ErrorDocument 处理请求时遇到 503 服务暂时不可用错误。”
如果我包括一个简单的
错误文档 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>
答案1
设置 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"