Назад | Перейти на главную страницу

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>

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

ErrorDocument /errors/my503.html

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

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

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

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