Вы можете использовать try_files
, чтобы проверить наличие одного или нескольких файлов.См. этот документ для получения подробной информации.
Сначала вам нужно захватить компоненты URI, чтобы можно было создать два варианта имени файла для попытки.
Я не уверенесли примеры в вашем вопросе и комментарии являются URI или путями.В следующем примере URI равен /image/foo/bar.jpg
, а соответствующие файлы расположены по адресу /path/to/image/foo/bar.jpg
и (необязательно) /path/to/image/foo/bar_large.jpg
.
Например:
location ~ ^(/image/.+)\.(jpg|png|svg)$ {
root /path/to;
try_files $1_large.$2 $1.$2 =404;
}
Блок будетвернуть большой вариант, если он существует, затем обычный вариант, если он существует, а затем статус 404. Если ни один из них не существует.
Порядок блоков регулярного выражения location
имеет значение, так как первый блок с соответствующей регулярностьювыражение используется для обработки запроса.Подробнее см. в этом документе .