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>
0
задан 24 September 2016 в 04:37
1 ответ

Если вы указываете полный URL-адрес для документа с ошибкой, вы неявно вызываете перенаправление, потому что браузеру нужно указать «перейти и получить страницу с ошибкой в ​​другом месте». Однако, если вы сделаете что-то вроде:

ErrorDocument /errors/my503.html

, перенаправления не будет, пока этот URI-путь обслуживается непосредственно в apache. В вашей настройке, поскольку вы проксируете '/', вы должны явно исключить этот документ из проксирования обратно в tomcat следующим образом:

ProxyPass /errors/my503.html !
ErrorDocument /errors/my503.html

Вам также необходимо добавить исключения для любых компонентов страницы, используемых в HTML.

Если вы хотите для обслуживания пользовательских страниц ошибок из фактических кодов ошибок HTTP, которые поступают от tomcat (обычно коды 4xx), вам следует обратиться к директиве ProxyErrorOverride

1
ответ дан 4 December 2019 в 16:29

Теги

Похожие вопросы