Apache ErrorDocument 没有重定向吗?

Apache ErrorDocument 没有重定向吗?

我有一台 Apache 服务器,它/转发到 Tomcat 服务器。当 Tomcat 服务器关闭时,我想显示一条错误消息。以下是我目前的情况:

ErrorDocument 502 "We're down, sorry :("

我想展示一个相对丰富的文档(有趣的图片和其他内容),而不仅仅是一句话的消息。问题是,我似乎无法提供文档,只能重定向到它们。我正在看这个文档

我想保留相同的 URL,但提供不同的 HTML 文件。有什么办法吗?

<VirtualHost *:443>
        ServerName ${DOMAIN_NAME}
        ProxyRequests Off

        ProxyAddHeaders On

        ProxyPass /stomp http://tomcat:8080/stomp
        ProxyPassReverse /stomp http://tomcat:8080/stomp

        ProxyPass /.well-known http://mail.${DOMAIN_NAME}:80/.well-known
        ProxyPassReverse /.well-known http://mail.${DOMAIN_NAME}:80/.well-known

        ProxyPassMatch / http://tomcat:8080 retry=0 timeout=10
        ProxyPassReverse / http://tomcat:8080

        SSLCertificateFile /etc/letsencrypt/live/${DOMAIN_NAME}/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/${DOMAIN_NAME}/privkey.pem
        Include /etc/letsencrypt/options-ssl-apache.conf

        ErrorDocument 502 ${PROXY_ERROR_MESSAGE}
        ErrorDocument 503 ${PROXY_ERROR_MESSAGE}
</VirtualHost>

答案1

如果您为错误文档指定了完全限定的 URL,则您会隐式地导致重定向,因为必须告知浏览器“到其他地方获取错误页面”。但是,如果您执行以下操作:

错误文档 /errors/my503.html

只要该 URI 路径直接在 apache 中提供,就不会有重定向。在您的设置中,由于您正在代理“/”,因此您必须明确排除该文档被代理回 tomcat,如下所示:

ProxyPass /errors/my503.html!
错误文档 /errors/my503.html

您还需要为 HTML 中使用的任何页面组件添加排除项。

如果你想从来自 tomcat 的实际 HTTP 错误代码(通常为 4xx 代码)提供自定义错误页面,那么你应该查看 ProxyErrorOverride 指令

相关内容