是否可以删除 Tomcat ROOT 目录?我们在 Tomcat 实例上运行了几个应用程序。我被要求清理 webapps 目录并删除所有未使用的文件夹。我删除了 manager、host-manager、docs 和 examples。
一切都很好,正如我所料。我查看了 ROOT 文件夹,里面有图像、几个 jsp 页面和一个 WEB-INF 目录。我们的应用程序都没有使用它们,所以我删除了 ROOT 目录。现在服务器在启动时挂起,我的应用程序无法启动。可以删除 ROOT 目录吗?根据 Apache 文档,它似乎是可选的:
“ROOT Web 应用程序的安全风险非常低,但它确实包含正在使用的 Tomcat 版本。通常应从可公开访问的 Tomcat 实例中删除 ROOT Web 应用程序,这并不是出于安全原因,而是为了向用户显示更合适的默认页面。”
我尝试只留下一个空的 ROOT 目录,但它仍然挂起。我是否遗漏了某个可能正在寻找 ROOT 目录的配置?
Tomcat 版本 8.5.15
答案1
许多 Tomcat 组件假设org.apache.catalina.Context
每个请求都有一个。如果删除ROOT
应用程序,则对于所有 URI 路径,情况将不成立,并且NullPointerException
将紧随其后。这肯定会发生在 上RewriteValve
,但可能适用于其他组件。
因此,最好有一个ROOT
应用程序,但它也可以是一个空的目录。
Tomcat 组件的这种行为是否漏洞是否容易引起讨论。我个人认为,缺少ROOT
背景信息是一种配置错误,但你可以提交错误报告如果你不这么认为的话。