如果您使用 mod_jk 和 tomcat 连接器,这是预期的行为。如果你使用类似的东西
ErrorDocument 503 "foo"
您将在页面上看到“foo”或
ErrorDocument 503 "http://www.somedomain.com"
这将引导您成功访问 somedomain.com。但是如果你使用类似的东西
ErrorDocument 503 /maintenance.html
Apache 将无法找到 [DocumentRoot]/maintenance.html,因为它正在 tomcat 连接器的上下文中查找。您需要卸载连接器并告诉 Apache 从另一个位置提供静态内容。
这是帮助您开始使用 mod_jk 的好指南。
Custom Error Pages with Apache and Tomcat Connectors
编辑:这是我用来让我们的自定义 503 页面正确呈现的解决方案。
首先,我们所有的自定义错误页面都以错误代码为前缀,因为我们的网络应用程序可能不包含以这些状态代码作为文件名根的文件。
因此,对于使用您的示例,我将在名为“custom_errors”的目录中包含以下三个文件:
/503_maintenance.html
/503_maintenance.css
/503_corp_logo.png
这使得从 jk 挂载中排除与自定义错误页面相关的任何文件变得容易。在我们的 vhost 文件中,然后我们设置错误文档位置和别名
#Alias the location of your custom error page files
Alias /error/ /var/apache2/2.2/htdocs/custom_errors
ErrorDocument 503 /error/503_maintenance.html
#mount the core tomcat application
JkMount /* myWorker
#set the 503 code if myWorker is unavailable
#and exclude the 503 pages from the tomcat/jboss application
JkMount /* myWorker;use_server_errors=503
JkUnMount /503* myWorker
这基本上告诉 Apache 和 mod_jk 不要在 tomcat 连接器的上下文中挂载任何带有 503 前缀的文件,而是在本地查找这些文件。如果你不想使用相对于 DocumentRoot 的位置,你可以像我一样使用和 Alias。