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

时间:2016-01-14 23:10:40

标签: 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如何解析所有这些位置和文件很难......

1 个答案:

答案 0 :(得分:2)

您可以自定义根目录(确保在更新后更新try_files)。并确保location /

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

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