如何解决在ubuntu apache2上添加自定义错误503页面html使用它与mod_jk和虚拟主机重定向到tomcat

时间:2014-10-21 14:38:24

标签: html tomcat ubuntu apache2 errordocument

我尝试了所有我在apache文档和stackoverflow和博客上发现的其他sugestions中找到的所有内容。 当我将folloowing行添加到任何配置文件时,如/etc/apache2/apache2.conf/etc/apache2/conf.d/localized-error-pages/etc/apache2/httpd.conf/etc/apache2/sites-enabled/000-default

ErrorDocument 503 "This is an error msg"甚至是html消息 ErrorDocument 503 "<h1> This is an error message </h1> 或外部网址重定向ErrorDocument 503 http://www.google.com它有效。

但是当我尝试像ErrorDocument 503 /ERROR_503.html这样的内部重定向时 或ErrorDocument 503 /error/ERROR_503.html我收到最后一行的默认消息:

此外,503服务暂时不可用 尝试使用ErrorDocument处理请求时遇到错误。

我尝试将html错误页面放在var/www的DocumentRoot var/www/error上。 尝试取消注释将所有错误设置为/etc/apache2/conf.d/localized-error-pages国际化的自定义网页的所有文件/usr/share/apache2/error。 由于此文件中的消息与默认消息相同,因此行

此外,503服务暂时不可用 尝试使用ErrorDocument处理请求时遇到错误。 不再显示了。但如果我改变了行

`ErrorDocument 503 /error/HTTP_SERVICE_UNAVAILABLE.html.var`

在localized-error-pages文件中放置到同一页面的新html,错误就回来了 并且页面未显示。如果我编辑文件HTTP_SERVICE_UNAVAILABLE.html.var,浏览器消息也没有任何变化。

更多信息:我使用apache2只是为了通过一个worker将端口80上的所有请求重定向到端口8089的tomcat。我的配置文件是https://dl.dropboxusercontent.com/u/1105054/apache.zip

3 个答案:

答案 0 :(得分:6)

这花了我太长时间(部分原因是拼写),但我认为我发布了整个虚拟主机文件,因为它可能有用。

您需要确保已经指定了DocumentRoot,并且在主ProxyPass /file.html !之前执行了ProxyPass /

<VirtualHost *:443>
    DocumentRoot /var/www/html
    #ProxyPreserveHost On

    <IfModule env_module>
         # Fake SSL if Loadbalancer does SSL-Offload 
         SetEnvIf Front-End-Https "^on$" HTTPS=on
    </IfModule>

    SSLEngine on
    SSLCertificateFile file
    SSLCertificateKeyFile file
    SSLCertificateChainFile file

    ProxyPass /maintenance-message.html !
    ProxyPass /maintance-message_files !
    ProxyPass / "ajp://localhost:8009/"
    ProxyPassReverse / "ajp://localhost:8009/"
    ServerName server.something.com:443
    ErrorDocument 503 /maintenance-message.html
</VirtualHost>

答案 1 :(得分:4)

在我的情况下,我刚刚将 ProxyPass 行添加到我的虚拟服务器配置中:

ProxyPass /serverError.html !
ErrorDocument 503 /serverError.html

告诉代理转到DocumentRoot并搜索错误页面。

您也可以找到有用的答案:https://stackoverflow.com/a/13019667

答案 2 :(得分:1)

我也遇到了同样的问题,经过深入的搜索,我发现这里是@Loren最好的(也是唯一的?)解决方案。

在将ProxyPass /file.html !设置在主ProxyPass /之前,而不是之后,才工作。 另外,还需要DocumentRoot。