CapRover配置宿主机静态文件服务返回Nginx 404错误求助
问题根因
- 你修改的是 CapRover 全局边缘反向代理 Nginx(
captain-nginx服务)的配置,但你配置的持久化目录映射是绑定到你自建的app应用容器上的,captain-nginx容器本身并没有挂载宿主机的/srv/foo路径,因此它在自身文件系统中查找/srv/foo/bar/test.jpg时找不到对应文件,直接返回404。 - 你设置的
/srv/foo/bar目录权限缺少可执行位:当前权限为drw-rw-r--,Nginx 进程需要目录的可执行权限才能进入目录读取内部文件,后续即使路径配置正确,也会出现403权限错误。
修复方案
推荐无需修改全局Nginx配置的稳妥方案:
- 把你之前修改的应用Nginx配置恢复为默认的反向代理逻辑。
- 你的
app应用直接使用官方Nginx镜像,将宿主机/srv/foo/bar路径映射到应用容器内的/usr/share/nginx/html路径,官方Nginx默认配置会直接提供该目录下的静态文件服务。 - 修正宿主机目录权限,执行命令
chmod -R 755 /srv/foo/bar,给目录添加可执行权限,保证Nginx进程可以正常读取文件。
如果坚持使用修改全局Nginx的方案:
- 给
captain-nginx服务添加挂载规则,将宿主机/srv/foo映射到captain-nginx容器内的同路径,该操作需要修改CapRover的Docker服务配置,可能影响全局反向代理的稳定性,不推荐。 - 同样按上述步骤修正目录权限。
内容的提问来源于stack exchange,提问作者wiradikusuma
相关产品推荐
相关产品推荐

