Nginx изображение не найдено запасной вариант - PullRequest
0 голосов
/ 26 февраля 2019

На моем сайте много изображений /image/test/manyfile.jpg, и теперь у меня есть /image/test/manyfile_large.jpg, но не все .jpg имеют _large.jpg.

Так что моя идея таковаиспользуйте Nginx, чтобы проверить файл manyfile_large.jpg, если он не существует, а затем переписать или перенаправить в manyfile.jpg

Кто-нибудь может привести пример конфигурации?

Большое спасибо!:)

1 Ответ

0 голосов
/ 27 февраля 2019

Вы можете использовать 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 имеет значение, так как первый блок с соответствующей регулярностьювыражение используется для обработки запроса.Подробнее см. в этом документе .

...