如何为nginx配置多个root?

如何为nginx配置多个root?
location ~ {
            root /var/www/static1/;
            root /var/www/static2/;
        }

我尝试了上述方法,这样当/name.gif请求时,如果/var/www/static1/name.gif存在,则按原样使用它;但如果没有这样的文件,则尝试查看是否存在/var/www/static2/name.gif,是否可以通过这种方式配置nginx?

答案1

假设您使用的是 nginx 0.7.24(?) 或更高版本,您可以使用 try_files 实现此目的:

location / {
    root /var/www;
    try_files /static1$uri /static2$uri =404;
}

通常情况下,在位置 / 内拥有根目录是不正确的,但在这种特定情况下,我认为您不想将 /var/www 设置为您的通用根目录,以防您最终添加其他位置。

答案2

我确信您的确切配置是不可能的。要从多个根目录提供服务,您需要将一个根目录别名添加到您的 URL 结构中,如下所示:

location  /images/ {
  alias  /path/to/images;
}

相关内容