Using nginx try_files with multiple directory trees
Solution 1:
You will need to use a regular expression location
to capture the part of the URI following /images/
. Then use try_files
to test a series of URIs using each site prefix.
For example:
location ~ ^/images/(.*)$ {
root /path/to/docroot/images;
try_files /siteA/$1 /siteB/$1 /siteC/$1 =404;
}
You could inherit the value of root
from the surrounding block, in which case adjust the parameters to try_files
appropriately.
Solution 2:
As an alternative to the accepted answer you can use a named location (@my_path
for example) to fallback in a other location, for example :
location / {
root /etc/nginx/static;
try_files $uri @index;
}
location @index {
root /srv/http;
try_files $uri $uri.html /index.html =404;
}