Я бы хотел настроить tomcat 9 с пользовательскими страницами ошибок HTML, чтобы он не отображал никаких подробностей при возникновении ошибки или при вызове URL-адреса, который не сопоставлен ни с одним из развернутых веб-приложений.
Это страница ошибок сервера, не привязанная к какому-либо конкретному развернутому веб-приложению.
Также стоит отметить, что мой экземпляр tomcat не имеет веб-приложения ROOT:
# ll
total 4
lrwxrwxrwx. 1 tomcat tomcat 27 Jan 7 15:37 mywebapp -> /var/webapps/mywebapp/web
drwxr-xr-x. 2 tomcat tomcat 54 Jan 7 19:19 errorpage
drwxr-x---. 4 tomcat tomcat 37 Jan 4 16:41 healthcheck
-rwxr-xr-x. 1 tomcat tomcat 3985 Sep 14 15:37 healthcheck.war
drwxr-xr-x. 5 tomcat tomcat 87 Jan 4 16:30 host-manager
drwxr-xr-x. 5 tomcat tomcat 103 Jan 4 16:30 manager
Пока я пытался добавить к tomcat/conf/web.xml
:
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
...
<error-page>
<error-code>404</error-code>
<location>/errorpage/404.html</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/errorpage/500.html</location>
</error-page>
<error-page>
<error-code>400</error-code>
<location>/errorpage/400.html</location>
</error-page>
</web-app>
И развернуло errorpage
веб-приложение под tomcat/webapps/errorpage
:
# ll webapps/errorpage/
total 12
-rw-r--r--. 1 tomcat tomcat 4 Jan 7 19:19 400.html
-rw-r--r--. 1 tomcat tomcat 4 Jan 7 19:19 404.html
-rw-r--r--. 1 tomcat tomcat 4 Jan 7 19:19 500.html
Если я вызываю страницы ошибок непосредственно, они обслуживаются:
# curl localhost:8080/errorpage/404.html
404
Однако при запросе случайного URL я все равно получаю страницу ошибки по умолчанию http 404.
# curl localhost:8080/ffffff
<!doctype html><html lang="en"><head><title>HTTP Status 404 – Not Found</title>(...)<h3>Apache Tomcat/9.0.10</h3></body></html>
Чего здесь не хватает?