You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jetty 9.4.38将monitoredPath暴露为可访问上下文如何禁用

Jetty 9.4.38 禁用monitoredDir上下文外部访问解决方案

你遇到的问题本质是WebAppProvider默认会将monitoredDir配置的目录关联为可直接访问的静态上下文,仅修改dirAllowed参数只能关闭目录列表展示,无法拦截已知路径的静态文件访问请求,可根据实际部署场景选择以下方案解决:

  • 方案1:直接禁用WebAppProvider自动部署(无需自动扫描contexts目录部署应用时使用)
    打开etc/jetty-deploy.xml,找到WebAppProvider对应的配置块,添加禁用参数即可,配置示例如下:
<New class="org.eclipse.jetty.deploy.providers.WebAppProvider">
  <Set name="enabled">false</Set>
  <Set name="scanInterval">0</Set>
  <!-- 其余原有配置可保留或删除,不影响禁用效果 -->
</New>

配置完成后重启Jetty,就不会再将monitoredDir目录暴露为可访问的上下文。

  • 方案2:添加安全约束拦截访问(需要保留自动部署功能时使用)
    在etc/webdefault.xml中新增安全约束配置,直接拒绝所有对该目录的访问请求:
<security-constraint>
  <web-resource-collection>
    <web-resource-name>prohibit deploy dir access</web-resource-name>
    <url-pattern>/contexts/*</url-pattern>
    <!-- 如果你自定义了monitoredDir的上下文路径,将上方的/contexts/*替换为对应路径即可 -->
  </web-resource-collection>
  <auth-constraint />
</security-constraint>

空的auth-constraint标签代表所有用户都没有该路径的访问权限,所有请求都会返回403状态码,无论是否知道具体文件路径都无法访问。

  • 方案3:修改monitoredDir存放路径(需要保留自动部署功能时使用)
    在start.ini中新增配置,将monitoredDir的存放路径调整到Jetty对外提供服务的静态资源根目录之外:
    jetty.deploy.monitoredPath=/your/private/path/contexts
    只要该路径不在Jetty的静态资源扫描范围内,就不会被关联为可访问的静态上下文,同时不会影响自动部署功能的正常运行。

配置完成后重启Jetty,访问原上下文路径下的已知文件返回403/404状态码即为配置生效。

内容的提问来源于stack exchange,提问作者Alexander M.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 00:21:00