我有一台 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 指令