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

Docker环境下Caddy 2.4.6 file_server browse指定目录访问404问题求助

Caddy 2.4.6 中 /files 路径返回404的解决方案

我来帮你解决这个Caddy路由匹配的问题——你遇到的404是因为路由规则的匹配范围没覆盖到/files这个路径。

问题原因

你的Caddyfile里写的file_server /files/*,这个路径匹配规则只会匹配以/files/开头的请求(注意结尾的斜杠)。当你访问aruiplex.com/files(不带结尾斜杠)时,这个请求不在该规则的匹配范围内,会直接落到最后那个根目录为/srv的file_server规则里,而/srv下并没有files相关资源,所以返回404错误。

两种可行的解决方案

方案1:添加重定向,让不带斜杠的/files跳转到带斜杠的版本

修改后的Caddyfile如下:

aruiplex.com {
  encode gzip
  
  # 将不带斜杠的/files重定向到/files/,确保匹配到后续的file_server规则
  redir /files /files/
  
  file_server /files/* {
    root /files
    browse
  }
  
  reverse_proxy /api/* localhost:7022
  
  file_server {
    root /srv
  }
}

这样用户访问aruiplex.com/files时,会自动跳转到aruiplex.com/files/,此时就会被/files/*的规则匹配,正常展示/files目录下的文件列表。

方案2:使用匹配器明确覆盖/files和/files/*路径

如果你不想做重定向,可以用Caddy的命名匹配器来同时匹配/files和/files/*:

aruiplex.com {
  encode gzip
  
  # 定义匹配器,同时匹配/files和所有/files/开头的路径
  @files path /files /files/*
  file_server @files {
    root /files
    browse
  }
  
  reverse_proxy /api/* localhost:7022
  
  file_server {
    root /srv
  }
}

这种方式更直接,不管用户访问/files还是/files/xxx,都会被匹配到对应的file_server规则,直接返回预期的文件列表或文件内容。

验证效果

修改配置后重启Caddy服务,你会发现:

  • 访问aruiplex.com依然返回/srv下的index.html
  • 访问aruiplex.com/files或aruiplex.com/files/都能正常展示容器内/files目录的文件列表
  • 访问aruiplex.com/api开头的路径依然会转发到localhost:7022

内容的提问来源于stack exchange,提问作者Aruix

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 15:08:13