nginx try_files со статическим изображением или откат на php файл с перезаписью

location /image_mini {
#  try_files /static_images/$2.jpg;
  rewrite ^/image_mini/([^.]+)-00([0-9]+)\.jpg$ /image.php?a=$2 last;
}

Я использую это правило перезаписи для отображения изображений на моем веб-сайте. Например, если я хочу отобразить идентификатор изображения # 123456789, я бы использовал https://www.example.com/image_mini/some_cool_seo_keywords-00123456789.jpg

Затем image.php проверит, есть ли / static_images / 00123456789.jpg находится в локальном кеше, в противном случае он создаст файл.

Я полагаю, я бы получил гораздо лучшую производительность, если бы nginx мог искать локальный статический файл перед откатом на image.php

Я попытался сделать это с помощью try_files, но я не уверен, как извлечь идентификатор изображения из URL-адреса, и я застрял здесь :( Любая помощь будет принята с благодарностью

1
задан 9 April 2018 в 00:06
1 ответ

Вы можете использовать свое регулярное выражение в операторе location . Например:

location ~* ^/image_mini/[^.]+-00([0-9]+)\.jpg$ {
    try_files /static_images/$1.jpg /image.php?a=$1;
}

Обратите внимание, что оценка операторов регулярного выражения location упорядочена. См. этот документ для получения дополнительной информации. Кроме того, этот документ о правильном синтаксисе для try_files .

0
ответ дан 4 December 2019 в 04:06

Теги

Похожие вопросы