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;
}