反向代理不提供本地错误页面

反向代理不提供本地错误页面

我在 Windows Server 2008 R2 上有一个 Apache 2.4 服务器,我将其用作反向代理。它一直运行良好,为大约 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 服务不可用错误。

如果我使用文本错误消息,例如“服务器当前处于离线状态”,那么我确实会看到显示的文本。如果我引用外部 Web 服务器来提供页面,那么我会看到从该服务器提供的页面。这几乎就像 Apache 服务器仅代理请求并且无法提供本地错误页面一样。

我猜我需要添加或更改虚拟主机条目以允许 Apache 服务器提供本地页面(错误页面),但由于服务器仅通过 DNS 中的 IP 引用,我不确定如何做到这一点(它使用命名主机)。我只是假设 Apache 可以正确提供错误页面,而无需进行其他配置(除了允许对包含错误页面的文件夹的权限并在 ErrorDocument 条目中引用它们)。

我错过了什么?自定义错误文档的设置看似简单,但我无法从代理本身提供它们。

答案1

直接来自Apache 文档

如果您使用 mod_proxy,您可能希望启用 ProxyErrorOverride,以便您可以代表您的 Origin 服务器提供自定义错误消息。如果您不启用 ProxyErrorOverride,Apache httpd 将不会为代理内容生成自定义错误文档。

另外,通过使用ErrorDocument 503 /errors/default.htmlapache,它认为它在原始服务器上,然后发出自己的错误,说它也找不到它。

相关内容