Nginx:从多个位置提供静态文件(可能很容易解决)



我有一个非常简单的案例,通过nginx提供静态文件,但我无法弄清楚。

我希望所有以/static/开头的 URL 都从目录/foo/bar/dir1 提供静态文件,如果文件不存在,则从/foo/bar/dir2 提供服务,如果不存在,则返回 404。

例如,在处理URL/static/some/file时.png我希望nginx首先尝试

/foo/bar/dir1/some/file.png 

然后

/foo/bar/dir2/some/file.png

我知道我可能应该使用这样的东西

location /static/ {
  try_files .... something .....
}

但是关于try_files的文档对我来说非常不清楚。我尝试了很多组合,但似乎没有任何效果。多个别名指令可以完成这项工作,但它不起作用。我认为解决方案必须非常简单,但我无法正确处理。很难调试nginx如何解析所有这些位置和文件......

您可以

自定义根目录(确保在之后更新try_files)。还要确保location /中没有根指令

location ~* ^/static/(.+)$ {
        root /;
        try_files /foo/bar/dir1/some/$1 /foo/bar/dir2/some/$1 =404;
}

编辑:删除了对静态文件夹的需求。

相关内容

最新更新